]> git.sur5r.net Git - u-boot/commitdiff
net: Define IP flag field values
authorPeter Tyser <ptyser@xes-inc.com>
Mon, 1 Dec 2008 22:26:20 +0000 (16:26 -0600)
committerBen Warren <biggerbadderben@gmail.com>
Fri, 5 Dec 2008 06:51:54 +0000 (22:51 -0800)
These defines were pulled from the "Add simple
IP/UDP fragmentation support" patch from Frank
Haverkamp <haver@vnet.ibm.com>.

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
include/net.h
net/net.c

index a5a256bcd083b82780ea52570d09b893a2af74f2..d2d394f0da80d0788e92dce97f740c9fe0679443 100644 (file)
@@ -200,6 +200,12 @@ typedef struct {
        ushort          udp_xsum;       /* Checksum                     */
 } IP_t;
 
+#define IP_OFFS                0x1fff /* ip offset *= 8 */
+#define IP_FLAGS       0xe000 /* first 3 bits */
+#define IP_FLAGS_RES   0x8000 /* reserved */
+#define IP_FLAGS_DFRAG 0x4000 /* don't fragments */
+#define IP_FLAGS_MFRAG 0x2000 /* more fragments */
+
 #define IP_HDR_SIZE_NO_UDP     (sizeof (IP_t) - 8)
 #define IP_HDR_SIZE            (sizeof (IP_t))
 
index 77e83b5bd0a986a1f8853a52caf4b6e0e3284dd0..cf1f4fa1f294bb30db3885f1afb4dc31da4e1585 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -735,7 +735,7 @@ int PingSend(void)
        ip->ip_tos   = 0;
        ip->ip_len   = htons(IP_HDR_SIZE_NO_UDP + 8);
        ip->ip_id    = htons(NetIPID++);
-       ip->ip_off   = htons(0x4000);   /* No fragmentation */
+       ip->ip_off   = htons(IP_FLAGS_DFRAG);   /* Don't fragment */
        ip->ip_ttl   = 255;
        ip->ip_p     = 0x01;            /* ICMP */
        ip->ip_sum   = 0;
@@ -1399,7 +1399,7 @@ NetReceive(volatile uchar * inpkt, int len)
                if ((ip->ip_hl_v & 0xf0) != 0x40) {
                        return;
                }
-               if (ip->ip_off & htons(0x1fff)) { /* Can't deal w/ fragments */
+               if (ip->ip_off & htons(IP_OFFS)) { /* Can't deal w/ fragments */
                        return;
                }
                /* can't deal with headers > 20 bytes */
@@ -1698,7 +1698,7 @@ NetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len)
        ip->ip_tos   = 0;
        ip->ip_len   = htons(IP_HDR_SIZE + len);
        ip->ip_id    = htons(NetIPID++);
-       ip->ip_off   = htons(0x4000);   /* No fragmentation */
+       ip->ip_off   = htons(IP_FLAGS_DFRAG);   /* Don't fragment */
        ip->ip_ttl   = 255;
        ip->ip_p     = 17;              /* UDP */
        ip->ip_sum   = 0;