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

vjbsdhdr.h
Go to the documentation of this file.
00001 #ifndef VJBSDHDR_H
00002 #define VJBSDHDR_H
00003 
00004 #include "lwip/tcp.h"
00005 
00006 /*
00007  * Structure of an internet header, naked of options.
00008  *
00009  * We declare ip_len and ip_off to be short, rather than u_short
00010  * pragmatically since otherwise unsigned comparisons can result
00011  * against negative integers quite easily, and fail in subtle ways.
00012  */
00013 PACK_STRUCT_BEGIN
00014 struct ip
00015 {
00016 #if defined(NO_CHAR_BITFIELDS)
00017   u_char   ip_hl_v;  /* bug in GCC for mips means the bitfield stuff will sometimes break - so we use a char for both and get round it with macro's instead... */
00018 #else
00019 #if BYTE_ORDER == LITTLE_ENDIAN
00020   unsigned ip_hl:4,              /* header length */
00021            ip_v :4;              /* version */
00022 #elif BYTE_ORDER == BIG_ENDIAN 
00023   unsigned ip_v :4,              /* version */
00024            ip_hl:4;              /* header length */
00025 #else
00026   COMPLAIN - NO BYTE ORDER SELECTED!
00027 #endif
00028 #endif
00029   u_char  ip_tos;                /* type of service */
00030   u_short ip_len;                /* total length */
00031   u_short ip_id;                 /* identification */
00032   u_short ip_off;                /* fragment offset field */
00033 #define  IP_DF 0x4000            /* dont fragment flag */
00034 #define  IP_MF 0x2000            /* more fragments flag */
00035 #define  IP_OFFMASK 0x1fff       /* mask for fragmenting bits */
00036   u_char  ip_ttl;                /* time to live */
00037   u_char  ip_p;                  /* protocol */
00038   u_short ip_sum;                /* checksum */
00039   struct  in_addr ip_src,ip_dst; /* source and dest address */
00040 };
00041 PACK_STRUCT_END
00042 
00043 typedef u32_t tcp_seq;
00044 
00045 /*
00046  * TCP header.
00047  * Per RFC 793, September, 1981.
00048  */
00049 PACK_STRUCT_BEGIN
00050 struct tcphdr  
00051 {
00052   u_short  th_sport;    /* source port */
00053   u_short  th_dport;    /* destination port */
00054   tcp_seq  th_seq;      /* sequence number */
00055   tcp_seq  th_ack;      /* acknowledgement number */
00056 #if defined(NO_CHAR_BITFIELDS)
00057   u_char   th_x2_off;
00058 #else
00059 #if BYTE_ORDER == LITTLE_ENDIAN
00060   unsigned th_x2 :4,    /* (unused) */
00061            th_off:4;    /* data offset */
00062 #endif
00063 #if BYTE_ORDER == BIG_ENDIAN 
00064   unsigned th_off:4,    /* data offset */
00065            th_x2 :4;    /* (unused) */
00066 #endif
00067 #endif
00068   u_char   th_flags;
00069   u_short  th_win;      /* window */
00070   u_short  th_sum;      /* checksum */
00071   u_short  th_urp;      /* urgent pointer */
00072 };
00073 PACK_STRUCT_END
00074 
00075 #endif /* VJBSDHDR_H */

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