Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenip.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (c) 1982, 1986, 1993 00003 * The Regents of the University of California. All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the University nor the names of its contributors 00014 * may be used to endorse or promote products derived from this software 00015 * without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 00018 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 00021 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00022 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00023 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00024 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00025 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00026 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00027 * SUCH DAMAGE. 00028 * 00029 * @(#)ip.h 8.2 (Berkeley) 6/1/94 00030 * $FreeBSD: src/sys/netinet/ip.h,v 1.16 1999/08/28 00:49:19 peter Exp $ 00031 */ 00032 00033 #ifndef _NETINET_IP_H_ 00034 #define _NETINET_IP_H_ 00035 00036 /* 00037 * Definitions for internet protocol version 4. 00038 * Per RFC 791, September 1981. 00039 */ 00040 #define IPVERSION 4 00041 00042 /* A little magic to make the Windows build happy. */ 00043 #if defined(_MSC_VER) || defined(__MINGW32__) 00044 #include <winsock2.h> 00045 #include <ws2tcpip.h> 00046 #include <time.h> 00047 00048 typedef u_short n_short; 00049 typedef u_int n_long; 00050 typedef u_int n_time; 00051 00052 #define EMSGSIZE WSAEMSGSIZE 00053 #define ENETUNREACH WSAENETUNREACH 00054 #define EHOSTUNREACH WSAEHOSTUNREACH 00055 #endif 00056 00057 /* 00058 * Structure of an internet header, naked of options. 00059 */ 00060 struct ip { 00061 #ifdef _IP_VHL 00062 u_char ip_vhl; /* version << 4 | header length >> 2 */ 00063 #else 00064 #if BYTE_ORDER == LITTLE_ENDIAN 00065 u_int ip_hl:4, /* header length */ 00066 ip_v:4; /* version */ 00067 #endif 00068 #if BYTE_ORDER == BIG_ENDIAN 00069 u_int ip_v:4, /* version */ 00070 ip_hl:4; /* header length */ 00071 #endif 00072 #endif /* not _IP_VHL */ 00073 u_char ip_tos; /* type of service */ 00074 u_short ip_len; /* total length */ 00075 u_short ip_id; /* identification */ 00076 u_short ip_off; /* fragment offset field */ 00077 #define IP_RF 0x8000 /* reserved fragment flag */ 00078 #define IP_DF 0x4000 /* don't fragment flag */ 00079 #define IP_MF 0x2000 /* more fragments flag */ 00080 #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ 00081 u_char ip_ttl; /* time to live */ 00082 u_char ip_p; /* protocol */ 00083 u_short ip_sum; /* checksum */ 00084 struct in_addr ip_src,ip_dst; /* source and dest address */ 00085 }; 00086 00087 #ifdef _IP_VHL 00088 #define IP_MAKE_VHL(v, hl) ((v) << 4 | (hl)) 00089 #define IP_VHL_HL(vhl) ((vhl) & 0x0f) 00090 #define IP_VHL_V(vhl) ((vhl) >> 4) 00091 #define IP_VHL_BORING 0x45 00092 #endif 00093 00094 #define IP_MAXPACKET 65535 /* maximum packet size */ 00095 00096 /* 00097 * Definitions for IP type of service (ip_tos) 00098 */ 00099 #define IPTOS_LOWDELAY 0x10 00100 #define IPTOS_THROUGHPUT 0x08 00101 #define IPTOS_RELIABILITY 0x04 00102 #define IPTOS_MINCOST 0x02 00103 00104 /* 00105 * Definitions for IP precedence (also in ip_tos) (hopefully unused) 00106 */ 00107 #define IPTOS_PREC_NETCONTROL 0xe0 00108 #define IPTOS_PREC_INTERNETCONTROL 0xc0 00109 #define IPTOS_PREC_CRITIC_ECP 0xa0 00110 #define IPTOS_PREC_FLASHOVERRIDE 0x80 00111 #define IPTOS_PREC_FLASH 0x60 00112 #define IPTOS_PREC_IMMEDIATE 0x40 00113 #define IPTOS_PREC_PRIORITY 0x20 00114 #define IPTOS_PREC_ROUTINE 0x00 00115 00116 /* 00117 * Definitions for options. 00118 */ 00119 #define IPOPT_COPIED(o) ((o)&0x80) 00120 #define IPOPT_CLASS(o) ((o)&0x60) 00121 #define IPOPT_NUMBER(o) ((o)&0x1f) 00122 00123 #define IPOPT_CONTROL 0x00 00124 #define IPOPT_RESERVED1 0x20 00125 #define IPOPT_DEBMEAS 0x40 00126 #define IPOPT_RESERVED2 0x60 00127 00128 #define IPOPT_EOL 0 /* end of option list */ 00129 #define IPOPT_NOP 1 /* no operation */ 00130 00131 #define IPOPT_RR 7 /* record packet route */ 00132 #define IPOPT_TS 68 /* timestamp */ 00133 #define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ 00134 #define IPOPT_LSRR 131 /* loose source route */ 00135 #define IPOPT_SATID 136 /* satnet id */ 00136 #define IPOPT_SSRR 137 /* strict source route */ 00137 #define IPOPT_RA 148 /* router alert */ 00138 00139 /* 00140 * Offsets to fields in options other than EOL and NOP. 00141 */ 00142 #define IPOPT_OPTVAL 0 /* option ID */ 00143 #define IPOPT_OLEN 1 /* option length */ 00144 #define IPOPT_OFFSET 2 /* offset within option */ 00145 #define IPOPT_MINOFF 4 /* min value of above */ 00146 00147 /* 00148 * Time stamp option structure. 00149 */ 00150 struct ip_timestamp { 00151 u_char ipt_code; /* IPOPT_TS */ 00152 u_char ipt_len; /* size of structure (variable) */ 00153 u_char ipt_ptr; /* index of current entry */ 00154 #if BYTE_ORDER == LITTLE_ENDIAN 00155 u_int ipt_flg:4, /* flags, see below */ 00156 ipt_oflw:4; /* overflow counter */ 00157 #endif 00158 #if BYTE_ORDER == BIG_ENDIAN 00159 u_int ipt_oflw:4, /* overflow counter */ 00160 ipt_flg:4; /* flags, see below */ 00161 #endif 00162 union ipt_timestamp { 00163 n_long ipt_time[1]; 00164 struct ipt_ta { 00165 struct in_addr ipt_addr; 00166 n_long ipt_time; 00167 } ipt_ta[1]; 00168 } ipt_timestamp; 00169 }; 00170 00171 /* flag bits for ipt_flg */ 00172 #define IPOPT_TS_TSONLY 0 /* timestamps only */ 00173 #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ 00174 #define IPOPT_TS_PRESPEC 3 /* specified modules only */ 00175 00176 /* bits for security (not byte swapped) */ 00177 #define IPOPT_SECUR_UNCLASS 0x0000 00178 #define IPOPT_SECUR_CONFID 0xf135 00179 #define IPOPT_SECUR_EFTO 0x789a 00180 #define IPOPT_SECUR_MMMM 0xbc4d 00181 #define IPOPT_SECUR_RESTR 0xaf13 00182 #define IPOPT_SECUR_SECRET 0xd788 00183 #define IPOPT_SECUR_TOPSECRET 0x6bc5 00184 00185 /* 00186 * Internet implementation parameters. 00187 */ 00188 #define MAXTTL 255 /* maximum time to live (seconds) */ 00189 #define IPDEFTTL 64 /* default ttl, from RFC 1340 */ 00190 #define IPFRAGTTL 60 /* time to live for frags, slowhz */ 00191 #define IPTTLDEC 1 /* subtracted when forwarding */ 00192 00193 #define IP_MSS 576 /* default maximum segment size */ 00194 00195 #endif Generated on Mon May 28 2012 04:23:48 for ReactOS by
1.7.6.1
|