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) 2001-2004 Swedish Institute of Computer Science.
00003  * All rights reserved. 
00004  * 
00005  * Redistribution and use in source and binary forms, with or without modification, 
00006  * are permitted provided that the following conditions are met:
00007  *
00008  * 1. Redistributions of source code must retain the above copyright notice,
00009  *    this list of conditions and the following disclaimer.
00010  * 2. Redistributions in binary form must reproduce the above copyright notice,
00011  *    this list of conditions and the following disclaimer in the documentation
00012  *    and/or other materials provided with the distribution.
00013  * 3. The name of the author may not be used to endorse or promote products
00014  *    derived from this software without specific prior written permission. 
00015  *
00016  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
00017  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
00018  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
00019  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00020  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
00021  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
00022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
00023  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
00024  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
00025  * OF SUCH DAMAGE.
00026  *
00027  * This file is part of the lwIP TCP/IP stack.
00028  * 
00029  * Author: Adam Dunkels <adam@sics.se>
00030  *
00031  */
00032 #ifndef __LWIP_IP_H__
00033 #define __LWIP_IP_H__
00034 
00035 #include "lwip/opt.h"
00036 #include "lwip/def.h"
00037 #include "lwip/pbuf.h"
00038 #include "lwip/ip_addr.h"
00039 
00040 #include "lwip/err.h"
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 
00046 #define IP_HLEN 40
00047 
00048 #define IP_PROTO_ICMP    58
00049 #define IP_PROTO_UDP     17
00050 #define IP_PROTO_UDPLITE 136
00051 #define IP_PROTO_TCP     6
00052 
00053 /* This is passed as the destination address to ip_output_if (not
00054    to ip_output), meaning that an IP header already is constructed
00055    in the pbuf. This is used when TCP retransmits. */
00056 #ifdef IP_HDRINCL
00057 #undef IP_HDRINCL
00058 #endif /* IP_HDRINCL */
00059 #define IP_HDRINCL  NULL
00060 
00061 #if LWIP_NETIF_HWADDRHINT
00062 #define IP_PCB_ADDRHINT ;u8_t addr_hint
00063 #else
00064 #define IP_PCB_ADDRHINT
00065 #endif /* LWIP_NETIF_HWADDRHINT */
00066 
00067 /* This is the common part of all PCB types. It needs to be at the
00068    beginning of a PCB type definition. It is located here so that
00069    changes to this common part are made in one location instead of
00070    having to change all PCB structs. */
00071 #define IP_PCB struct ip_addr local_ip; \
00072   struct ip_addr remote_ip; \
00073    /* Socket options */  \
00074   u16_t so_options;      \
00075    /* Type Of Service */ \
00076   u8_t tos;              \
00077   /* Time To Live */     \
00078   u8_t ttl;              \
00079   /* link layer address resolution hint */ \
00080   IP_PCB_ADDRHINT
00081 
00082 
00083 /* The IPv6 header. */
00084 struct ip_hdr {
00085 #if BYTE_ORDER == LITTLE_ENDIAN
00086   u8_t tclass1:4, v:4;
00087   u8_t flow1:4, tclass2:4;  
00088 #else
00089   u8_t v:4, tclass1:4;
00090   u8_t tclass2:8, flow1:4;
00091 #endif
00092   u16_t flow2;
00093   u16_t len;                /* payload length */
00094   u8_t nexthdr;             /* next header */
00095   u8_t hoplim;              /* hop limit (TTL) */
00096   struct ip_addr src, dest;          /* source and destination IP addresses */
00097 };
00098 
00099 #define IPH_PROTO(hdr) (iphdr->nexthdr)
00100 
00101 void ip_init(void);
00102 
00103 #include "lwip/netif.h"
00104 
00105 struct netif *ip_route(struct ip_addr *dest);
00106 
00107 void ip_input(struct pbuf *p, struct netif *inp);
00108 
00109 /* source and destination addresses in network byte order, please */
00110 err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
00111          u8_t ttl, u8_t proto);
00112 
00113 err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
00114       u8_t ttl, u8_t proto,
00115       struct netif *netif);
00116 
00117 #define ip_current_netif() NULL
00118 #define ip_current_header() NULL
00119 
00120 #if IP_DEBUG
00121 void ip_debug_print(struct pbuf *p);
00122 #endif /* IP_DEBUG */
00123 
00124 #ifdef __cplusplus
00125 }
00126 #endif
00127 
00128 #endif /* __LWIP_IP_H__ */
00129 
00130 

Generated on Sun May 27 2012 04:24:02 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.