| OLD | NEW |
| 1 #ifndef _NETINET_IP_H | 1 #ifndef _NETINET_IP_H |
| 2 #define _NETINET_IP_H | 2 #define _NETINET_IP_H |
| 3 | 3 |
| 4 #ifdef __cplusplus | 4 #ifdef __cplusplus |
| 5 extern "C" { | 5 extern "C" { |
| 6 #endif | 6 #endif |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <netinet/in.h> | 9 #include <netinet/in.h> |
| 10 #include <endian.h> | 10 #include <endian.h> |
| 11 | 11 |
| 12 struct timestamp { | 12 struct timestamp { |
| 13 » uint8_t len; | 13 uint8_t len; |
| 14 » uint8_t ptr; | 14 uint8_t ptr; |
| 15 #if __BYTE_ORDER == __LITTLE_ENDIAN | 15 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 16 » unsigned int flags:4; | 16 unsigned int flags : 4; |
| 17 » unsigned int overflow:4; | 17 unsigned int overflow : 4; |
| 18 #else | 18 #else |
| 19 » unsigned int overflow:4; | 19 unsigned int overflow : 4; |
| 20 » unsigned int flags:4; | 20 unsigned int flags : 4; |
| 21 #endif | 21 #endif |
| 22 » uint32_t data[9]; | 22 uint32_t data[9]; |
| 23 }; | 23 }; |
| 24 | 24 |
| 25 struct iphdr { | 25 struct iphdr { |
| 26 #if __BYTE_ORDER == __LITTLE_ENDIAN | 26 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 27 » unsigned int ihl:4; | 27 unsigned int ihl : 4; |
| 28 » unsigned int version:4; | 28 unsigned int version : 4; |
| 29 #else | 29 #else |
| 30 » unsigned int version:4; | 30 unsigned int version : 4; |
| 31 » unsigned int ihl:4; | 31 unsigned int ihl : 4; |
| 32 #endif | 32 #endif |
| 33 » uint8_t tos; | 33 uint8_t tos; |
| 34 » uint16_t tot_len; | 34 uint16_t tot_len; |
| 35 » uint16_t id; | 35 uint16_t id; |
| 36 » uint16_t frag_off; | 36 uint16_t frag_off; |
| 37 » uint8_t ttl; | 37 uint8_t ttl; |
| 38 » uint8_t protocol; | 38 uint8_t protocol; |
| 39 » uint16_t check; | 39 uint16_t check; |
| 40 » uint32_t saddr; | 40 uint32_t saddr; |
| 41 » uint32_t daddr; | 41 uint32_t daddr; |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 struct ip { | 44 struct ip { |
| 45 #if __BYTE_ORDER == __LITTLE_ENDIAN | 45 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 46 » unsigned int ip_hl:4; | 46 unsigned int ip_hl : 4; |
| 47 » unsigned int ip_v:4; | 47 unsigned int ip_v : 4; |
| 48 #else | 48 #else |
| 49 » unsigned int ip_v:4; | 49 unsigned int ip_v : 4; |
| 50 » unsigned int ip_hl:4; | 50 unsigned int ip_hl : 4; |
| 51 #endif | 51 #endif |
| 52 » uint8_t ip_tos; | 52 uint8_t ip_tos; |
| 53 » uint16_t ip_len; | 53 uint16_t ip_len; |
| 54 » uint16_t ip_id; | 54 uint16_t ip_id; |
| 55 » uint16_t ip_off; | 55 uint16_t ip_off; |
| 56 » uint8_t ip_ttl; | 56 uint8_t ip_ttl; |
| 57 » uint8_t ip_p; | 57 uint8_t ip_p; |
| 58 » uint16_t ip_sum; | 58 uint16_t ip_sum; |
| 59 » struct in_addr ip_src, ip_dst; | 59 struct in_addr ip_src, ip_dst; |
| 60 }; | 60 }; |
| 61 | 61 |
| 62 #define»IP_RF 0x8000 | 62 #define IP_RF 0x8000 |
| 63 #define»IP_DF 0x4000 | 63 #define IP_DF 0x4000 |
| 64 #define»IP_MF 0x2000 | 64 #define IP_MF 0x2000 |
| 65 #define»IP_OFFMASK 0x1fff | 65 #define IP_OFFMASK 0x1fff |
| 66 | 66 |
| 67 struct ip_timestamp { | 67 struct ip_timestamp { |
| 68 » uint8_t ipt_code; | 68 uint8_t ipt_code; |
| 69 » uint8_t ipt_len; | 69 uint8_t ipt_len; |
| 70 » uint8_t ipt_ptr; | 70 uint8_t ipt_ptr; |
| 71 #if __BYTE_ORDER == __LITTLE_ENDIAN | 71 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 72 » unsigned int ipt_flg:4; | 72 unsigned int ipt_flg : 4; |
| 73 » unsigned int ipt_oflw:4; | 73 unsigned int ipt_oflw : 4; |
| 74 #else | 74 #else |
| 75 » unsigned int ipt_oflw:4; | 75 unsigned int ipt_oflw : 4; |
| 76 » unsigned int ipt_flg:4; | 76 unsigned int ipt_flg : 4; |
| 77 #endif | 77 #endif |
| 78 » uint32_t data[9]; | 78 uint32_t data[9]; |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 #define»IPVERSION» 4 | 81 #define IPVERSION 4 |
| 82 #define»IP_MAXPACKET» 65535 | 82 #define IP_MAXPACKET 65535 |
| 83 | 83 |
| 84 #define»IPTOS_ECN_MASK» » 0x03 | 84 #define IPTOS_ECN_MASK 0x03 |
| 85 #define»IPTOS_ECN(x)» » ((x) & IPTOS_ECN_MASK) | 85 #define IPTOS_ECN(x) ((x)&IPTOS_ECN_MASK) |
| 86 #define»IPTOS_ECN_NOT_ECT» 0x00 | 86 #define IPTOS_ECN_NOT_ECT 0x00 |
| 87 #define»IPTOS_ECN_ECT1» » 0x01 | 87 #define IPTOS_ECN_ECT1 0x01 |
| 88 #define»IPTOS_ECN_ECT0» » 0x02 | 88 #define IPTOS_ECN_ECT0 0x02 |
| 89 #define»IPTOS_ECN_CE» » 0x03 | 89 #define IPTOS_ECN_CE 0x03 |
| 90 | 90 |
| 91 #define»IPTOS_DSCP_MASK»» 0xfc | 91 #define IPTOS_DSCP_MASK 0xfc |
| 92 #define»IPTOS_DSCP(x)» » ((x) & IPTOS_DSCP_MASK) | 92 #define IPTOS_DSCP(x) ((x)&IPTOS_DSCP_MASK) |
| 93 #define»IPTOS_DSCP_AF11»» 0x28 | 93 #define IPTOS_DSCP_AF11 0x28 |
| 94 #define»IPTOS_DSCP_AF12»» 0x30 | 94 #define IPTOS_DSCP_AF12 0x30 |
| 95 #define»IPTOS_DSCP_AF13»» 0x38 | 95 #define IPTOS_DSCP_AF13 0x38 |
| 96 #define»IPTOS_DSCP_AF21»» 0x48 | 96 #define IPTOS_DSCP_AF21 0x48 |
| 97 #define»IPTOS_DSCP_AF22»» 0x50 | 97 #define IPTOS_DSCP_AF22 0x50 |
| 98 #define»IPTOS_DSCP_AF23»» 0x58 | 98 #define IPTOS_DSCP_AF23 0x58 |
| 99 #define»IPTOS_DSCP_AF31»» 0x68 | 99 #define IPTOS_DSCP_AF31 0x68 |
| 100 #define»IPTOS_DSCP_AF32»» 0x70 | 100 #define IPTOS_DSCP_AF32 0x70 |
| 101 #define»IPTOS_DSCP_AF33»» 0x78 | 101 #define IPTOS_DSCP_AF33 0x78 |
| 102 #define»IPTOS_DSCP_AF41»» 0x88 | 102 #define IPTOS_DSCP_AF41 0x88 |
| 103 #define»IPTOS_DSCP_AF42»» 0x90 | 103 #define IPTOS_DSCP_AF42 0x90 |
| 104 #define»IPTOS_DSCP_AF43»» 0x98 | 104 #define IPTOS_DSCP_AF43 0x98 |
| 105 #define»IPTOS_DSCP_EF» » 0xb8 | 105 #define IPTOS_DSCP_EF 0xb8 |
| 106 | 106 |
| 107 #define»IPTOS_CLASS_MASK» 0xe0 | 107 #define IPTOS_CLASS_MASK 0xe0 |
| 108 #define»IPTOS_CLASS(x)» » ((x) & IPTOS_CLASS_MASK) | 108 #define IPTOS_CLASS(x) ((x)&IPTOS_CLASS_MASK) |
| 109 #define»IPTOS_CLASS_CS0»» 0x00 | 109 #define IPTOS_CLASS_CS0 0x00 |
| 110 #define»IPTOS_CLASS_CS1»» 0x20 | 110 #define IPTOS_CLASS_CS1 0x20 |
| 111 #define»IPTOS_CLASS_CS2»» 0x40 | 111 #define IPTOS_CLASS_CS2 0x40 |
| 112 #define»IPTOS_CLASS_CS3»» 0x60 | 112 #define IPTOS_CLASS_CS3 0x60 |
| 113 #define»IPTOS_CLASS_CS4»» 0x80 | 113 #define IPTOS_CLASS_CS4 0x80 |
| 114 #define»IPTOS_CLASS_CS5»» 0xa0 | 114 #define IPTOS_CLASS_CS5 0xa0 |
| 115 #define»IPTOS_CLASS_CS6»» 0xc0 | 115 #define IPTOS_CLASS_CS6 0xc0 |
| 116 #define»IPTOS_CLASS_CS7»» 0xe0 | 116 #define IPTOS_CLASS_CS7 0xe0 |
| 117 #define»IPTOS_CLASS_DEFAULT» IPTOS_CLASS_CS0 | 117 #define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0 |
| 118 | 118 |
| 119 #define»IPTOS_TOS_MASK» » 0x1E | 119 #define IPTOS_TOS_MASK 0x1E |
| 120 #define»IPTOS_TOS(tos)» » ((tos) & IPTOS_TOS_MASK) | 120 #define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK) |
| 121 #define»IPTOS_LOWDELAY» » 0x10 | 121 #define IPTOS_LOWDELAY 0x10 |
| 122 #define»IPTOS_THROUGHPUT» 0x08 | 122 #define IPTOS_THROUGHPUT 0x08 |
| 123 #define»IPTOS_RELIABILITY» 0x04 | 123 #define IPTOS_RELIABILITY 0x04 |
| 124 #define»IPTOS_LOWCOST» » 0x02 | 124 #define IPTOS_LOWCOST 0x02 |
| 125 #define»IPTOS_MINCOST» » IPTOS_LOWCOST | 125 #define IPTOS_MINCOST IPTOS_LOWCOST |
| 126 | 126 |
| 127 #define»IPTOS_PREC_MASK»» » 0xe0 | 127 #define IPTOS_PREC_MASK 0xe0 |
| 128 #define»IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) | 128 #define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK) |
| 129 #define»IPTOS_PREC_NETCONTROL» » 0xe0 | 129 #define IPTOS_PREC_NETCONTROL 0xe0 |
| 130 #define»IPTOS_PREC_INTERNETCONTROL» 0xc0 | 130 #define IPTOS_PREC_INTERNETCONTROL 0xc0 |
| 131 #define»IPTOS_PREC_CRITIC_ECP» » 0xa0 | 131 #define IPTOS_PREC_CRITIC_ECP 0xa0 |
| 132 #define»IPTOS_PREC_FLASHOVERRIDE» 0x80 | 132 #define IPTOS_PREC_FLASHOVERRIDE 0x80 |
| 133 #define»IPTOS_PREC_FLASH» » 0x60 | 133 #define IPTOS_PREC_FLASH 0x60 |
| 134 #define»IPTOS_PREC_IMMEDIATE» » 0x40 | 134 #define IPTOS_PREC_IMMEDIATE 0x40 |
| 135 #define»IPTOS_PREC_PRIORITY» » 0x20 | 135 #define IPTOS_PREC_PRIORITY 0x20 |
| 136 #define»IPTOS_PREC_ROUTINE» » 0x00 | 136 #define IPTOS_PREC_ROUTINE 0x00 |
| 137 | 137 |
| 138 #define»IPOPT_COPY» » 0x80 | 138 #define IPOPT_COPY 0x80 |
| 139 #define»IPOPT_CLASS_MASK» 0x60 | 139 #define IPOPT_CLASS_MASK 0x60 |
| 140 #define»IPOPT_NUMBER_MASK» 0x1f | 140 #define IPOPT_NUMBER_MASK 0x1f |
| 141 | 141 |
| 142 #define»IPOPT_COPIED(o)»» ((o) & IPOPT_COPY) | 142 #define IPOPT_COPIED(o) ((o)&IPOPT_COPY) |
| 143 #define»IPOPT_CLASS(o)» » ((o) & IPOPT_CLASS_MASK) | 143 #define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK) |
| 144 #define»IPOPT_NUMBER(o)»» ((o) & IPOPT_NUMBER_MASK) | 144 #define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK) |
| 145 | 145 |
| 146 #define»IPOPT_CONTROL» » 0x00 | 146 #define IPOPT_CONTROL 0x00 |
| 147 #define»IPOPT_RESERVED1»» 0x20 | 147 #define IPOPT_RESERVED1 0x20 |
| 148 #define»IPOPT_DEBMEAS» » 0x40 | 148 #define IPOPT_DEBMEAS 0x40 |
| 149 #define»IPOPT_MEASUREMENT IPOPT_DEBMEAS | 149 #define IPOPT_MEASUREMENT IPOPT_DEBMEAS |
| 150 #define»IPOPT_RESERVED2»» 0x60 | 150 #define IPOPT_RESERVED2 0x60 |
| 151 | 151 |
| 152 #define»IPOPT_EOL» » 0 | 152 #define IPOPT_EOL 0 |
| 153 #define»IPOPT_END» » IPOPT_EOL | 153 #define IPOPT_END IPOPT_EOL |
| 154 #define»IPOPT_NOP» » 1 | 154 #define IPOPT_NOP 1 |
| 155 #define»IPOPT_NOOP» » IPOPT_NOP | 155 #define IPOPT_NOOP IPOPT_NOP |
| 156 | 156 |
| 157 #define»IPOPT_RR» » 7 | 157 #define IPOPT_RR 7 |
| 158 #define»IPOPT_TS» » 68 | 158 #define IPOPT_TS 68 |
| 159 #define»IPOPT_TIMESTAMP»» IPOPT_TS | 159 #define IPOPT_TIMESTAMP IPOPT_TS |
| 160 #define»IPOPT_SECURITY» » 130 | 160 #define IPOPT_SECURITY 130 |
| 161 #define»IPOPT_SEC» » IPOPT_SECURITY | 161 #define IPOPT_SEC IPOPT_SECURITY |
| 162 #define»IPOPT_LSRR» » 131 | 162 #define IPOPT_LSRR 131 |
| 163 #define»IPOPT_SATID» » 136 | 163 #define IPOPT_SATID 136 |
| 164 #define»IPOPT_SID» » IPOPT_SATID | 164 #define IPOPT_SID IPOPT_SATID |
| 165 #define»IPOPT_SSRR» » 137 | 165 #define IPOPT_SSRR 137 |
| 166 #define»IPOPT_RA» » 148 | 166 #define IPOPT_RA 148 |
| 167 | 167 |
| 168 #define»IPOPT_OPTVAL» » 0 | 168 #define IPOPT_OPTVAL 0 |
| 169 #define»IPOPT_OLEN» » 1 | 169 #define IPOPT_OLEN 1 |
| 170 #define»IPOPT_OFFSET» » 2 | 170 #define IPOPT_OFFSET 2 |
| 171 #define»IPOPT_MINOFF» » 4 | 171 #define IPOPT_MINOFF 4 |
| 172 | 172 |
| 173 #define»MAX_IPOPTLEN» » 40 | 173 #define MAX_IPOPTLEN 40 |
| 174 | 174 |
| 175 #define»IPOPT_TS_TSONLY»» 0 | 175 #define IPOPT_TS_TSONLY 0 |
| 176 #define»IPOPT_TS_TSANDADDR» 1 | 176 #define IPOPT_TS_TSANDADDR 1 |
| 177 #define»IPOPT_TS_PRESPEC» 3 | 177 #define IPOPT_TS_PRESPEC 3 |
| 178 | 178 |
| 179 #define»IPOPT_SECUR_UNCLASS» 0x0000 | 179 #define IPOPT_SECUR_UNCLASS 0x0000 |
| 180 #define»IPOPT_SECUR_CONFID» 0xf135 | 180 #define IPOPT_SECUR_CONFID 0xf135 |
| 181 #define»IPOPT_SECUR_EFTO» 0x789a | 181 #define IPOPT_SECUR_EFTO 0x789a |
| 182 #define»IPOPT_SECUR_MMMM» 0xbc4d | 182 #define IPOPT_SECUR_MMMM 0xbc4d |
| 183 #define»IPOPT_SECUR_RESTR» 0xaf13 | 183 #define IPOPT_SECUR_RESTR 0xaf13 |
| 184 #define»IPOPT_SECUR_SECRET» 0xd788 | 184 #define IPOPT_SECUR_SECRET 0xd788 |
| 185 #define»IPOPT_SECUR_TOPSECRET» 0x6bc5 | 185 #define IPOPT_SECUR_TOPSECRET 0x6bc5 |
| 186 | 186 |
| 187 #define»MAXTTL» » 255 | 187 #define MAXTTL 255 |
| 188 #define»IPDEFTTL» 64 | 188 #define IPDEFTTL 64 |
| 189 #define»IPFRAGTTL» 60 | 189 #define IPFRAGTTL 60 |
| 190 #define»IPTTLDEC» 1 | 190 #define IPTTLDEC 1 |
| 191 | 191 |
| 192 #define»IP_MSS» » 576 | 192 #define IP_MSS 576 |
| 193 | 193 |
| 194 #ifdef __cplusplus | 194 #ifdef __cplusplus |
| 195 } | 195 } |
| 196 #endif | 196 #endif |
| 197 | 197 |
| 198 #endif | 198 #endif |
| OLD | NEW |