ip_compat.h revision 145519
1/* $FreeBSD: head/contrib/ipfilter/ipsd/Celler/ip_compat.h 145519 2005-04-25 18:20:15Z darrenr $ */ 2 3/* 4 * (C)opyright 1995 by Darren Reed. 5 * 6 * This code may be freely distributed as long as it retains this notice 7 * and is not changed in any way. The author accepts no responsibility 8 * for the use of this software. I hate legaleese, don't you ? 9 * 10 * @(#)ip_compat.h 1.1 9/14/95 11 */ 12 13/* 14 * These #ifdef's are here mainly for linux, but who knows, they may 15 * not be in other places or maybe one day linux will grow up and some 16 * of these will turn up there too. 17 */ 18#ifndef ICMP_UNREACH 19# define ICMP_UNREACH ICMP_DEST_UNREACH 20#endif 21#ifndef ICMP_SOURCEQUENCH 22# define ICMP_SOURCEQUENCH ICMP_SOURCE_QUENCH 23#endif 24#ifndef ICMP_TIMXCEED 25# define ICMP_TIMXCEED ICMP_TIME_EXCEEDED 26#endif 27#ifndef ICMP_PARAMPROB 28# define ICMP_PARAMPROB ICMP_PARAMETERPROB 29#endif 30#ifndef IPVERSION 31# define IPVERSION 4 32#endif 33#ifndef IPOPT_MINOFF 34# define IPOPT_MINOFF 4 35#endif 36#ifndef IPOPT_COPIED 37# define IPOPT_COPIED(x) ((x)&0x80) 38#endif 39#ifndef IPOPT_EOL 40# define IPOPT_EOL 0 41#endif 42#ifndef IPOPT_NOP 43# define IPOPT_NOP 1 44#endif 45#ifndef IP_MF 46# define IP_MF ((u_short)0x2000) 47#endif 48#ifndef ETHERTYPE_IP 49# define ETHERTYPE_IP ((u_short)0x0800) 50#endif 51#ifndef TH_FIN 52# define TH_FIN 0x01 53#endif 54#ifndef TH_SYN 55# define TH_SYN 0x02 56#endif 57#ifndef TH_RST 58# define TH_RST 0x04 59#endif 60#ifndef TH_PUSH 61# define TH_PUSH 0x08 62#endif 63#ifndef TH_ACK 64# define TH_ACK 0x10 65#endif 66#ifndef TH_URG 67# define TH_URG 0x20 68#endif 69#ifndef IPOPT_EOL 70# define IPOPT_EOL 0 71#endif 72#ifndef IPOPT_NOP 73# define IPOPT_NOP 1 74#endif 75#ifndef IPOPT_RR 76# define IPOPT_RR 7 77#endif 78#ifndef IPOPT_TS 79# define IPOPT_TS 68 80#endif 81#ifndef IPOPT_SECURITY 82# define IPOPT_SECURITY 130 83#endif 84#ifndef IPOPT_LSRR 85# define IPOPT_LSRR 131 86#endif 87#ifndef IPOPT_SATID 88# define IPOPT_SATID 136 89#endif 90#ifndef IPOPT_SSRR 91# define IPOPT_SSRR 137 92#endif 93#ifndef IPOPT_SECUR_UNCLASS 94# define IPOPT_SECUR_UNCLASS ((u_short)0x0000) 95#endif 96#ifndef IPOPT_SECUR_CONFID 97# define IPOPT_SECUR_CONFID ((u_short)0xf135) 98#endif 99#ifndef IPOPT_SECUR_EFTO 100# define IPOPT_SECUR_EFTO ((u_short)0x789a) 101#endif 102#ifndef IPOPT_SECUR_MMMM 103# define IPOPT_SECUR_MMMM ((u_short)0xbc4d) 104#endif 105#ifndef IPOPT_SECUR_RESTR 106# define IPOPT_SECUR_RESTR ((u_short)0xaf13) 107#endif 108#ifndef IPOPT_SECUR_SECRET 109# define IPOPT_SECUR_SECRET ((u_short)0xd788) 110#endif 111#ifndef IPOPT_SECUR_TOPSECRET 112# define IPOPT_SECUR_TOPSECRET ((u_short)0x6bc5) 113#endif 114 115#ifdef linux 116# define icmp icmphdr 117# define icmp_type type 118# define icmp_code code 119 120/* 121 * From /usr/include/netinet/ip_var.h 122 * !%@#!$@# linux... 123 */ 124struct ipovly { 125 caddr_t ih_next, ih_prev; /* for protocol sequence q's */ 126 u_char ih_x1; /* (unused) */ 127 u_char ih_pr; /* protocol */ 128 short ih_len; /* protocol length */ 129 struct in_addr ih_src; /* source internet address */ 130 struct in_addr ih_dst; /* destination internet address */ 131}; 132 133typedef struct { 134 __u16 th_sport; 135 __u16 th_dport; 136 __u32 th_seq; 137 __u32 th_ack; 138# if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\ 139 defined(vax) 140 __u8 th_res:4; 141 __u8 th_off:4; 142#else 143 __u8 th_off:4; 144 __u8 th_res:4; 145#endif 146 __u8 th_flags; 147 __u16 th_win; 148 __u16 th_sum; 149 __u16 th_urp; 150} tcphdr_t; 151 152typedef struct { 153 __u16 uh_sport; 154 __u16 uh_dport; 155 __s16 uh_ulen; 156 __u16 uh_sum; 157} udphdr_t; 158 159typedef struct { 160# if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\ 161 defined(vax) 162 __u8 ip_hl:4; 163 __u8 ip_v:4; 164# else 165 __u8 ip_hl:4; 166 __u8 ip_v:4; 167# endif 168 __u8 ip_tos; 169 __u16 ip_len; 170 __u16 ip_id; 171 __u16 ip_off; 172 __u8 ip_ttl; 173 __u8 ip_p; 174 __u16 ip_sum; 175 struct in_addr ip_src; 176 struct in_addr ip_dst; 177} ip_t; 178 179typedef struct { 180 __u8 ether_dhost[6]; 181 __u8 ether_shost[6]; 182 __u16 ether_type; 183} ether_header_t; 184 185# define bcopy(a,b,c) memmove(b,a,c) 186# define bcmp(a,b,c) memcmp(a,b,c) 187 188# define ifnet device 189 190#else 191 192typedef struct udphdr udphdr_t; 193typedef struct tcphdr tcphdr_t; 194typedef struct ip ip_t; 195typedef struct ether_header ether_header_t; 196 197#endif 198 199#ifdef solaris 200# define bcopy(a,b,c) memmove(b,a,c) 201# define bcmp(a,b,c) memcmp(a,b,c) 202# define bzero(a,b) memset(a,0,b) 203#endif 204