From 5f651f862232a63ca44833041deb381f305febc6 Mon Sep 17 00:00:00 2001 From: Nikhil Chandru Rao Date: Fri, 30 Jun 2006 08:52:03 +0000 Subject: Added fragment reassembly code --- src/include/gpxe/ip.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/include') diff --git a/src/include/gpxe/ip.h b/src/include/gpxe/ip.h index a6c590643..4f0f42f85 100644 --- a/src/include/gpxe/ip.h +++ b/src/include/gpxe/ip.h @@ -8,18 +8,25 @@ */ #include +#include /* IP constants */ #define IP_VER 4 #define IP_MASK_VER 0xf0 #define IP_MASK_HLEN 0x0f +#define IP_MASK_OFFSET 0x1fff +#define IP_MASK_DONOTFRAG 0x4000 +#define IP_MASK_MOREFRAGS 0x2000 #define IP_PSHLEN 12 /* IP header defaults */ #define IP_TOS 0 #define IP_TTL 64 +#define IP_FRAG_PKB_SIZE 1500 +#define IP_FRAG_TIMEOUT 50 + /* IP4 pseudo header */ struct ipv4_pseudo_header { struct in_addr src; @@ -29,6 +36,22 @@ struct ipv4_pseudo_header { uint16_t len; }; +/* Fragment reassembly buffer */ +struct frag_buffer { + /* Identification number */ + uint16_t ident; + /* Source network address */ + struct in_addr src; + /* Destination network address */ + struct in_addr dest; + /* Reassembled packet buffer */ + struct pk_buff *frag_pkb; + /* Reassembly timer */ + struct retry_timer frag_timer; + /* List of fragment reassembly buffers */ + struct list_head list; +}; + struct pk_buff; struct net_device; struct net_protocol; -- cgit v1.2.3-55-g7522