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