ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ip.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.