summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2008-12-01 16:26:20 -0600
committerBen Warren <biggerbadderben@gmail.com>2008-12-04 22:51:54 -0800
commite0c07b868cab405ab4b5335a0247899bfc5ea0b6 (patch)
tree940c58efbe5344adb637655621c078978777c784
parent23afaba65ec5206757e589ef334a8b38168c045f (diff)
downloadu-boot-e0c07b868cab405ab4b5335a0247899bfc5ea0b6.tar.gz
u-boot-e0c07b868cab405ab4b5335a0247899bfc5ea0b6.tar.bz2
u-boot-e0c07b868cab405ab4b5335a0247899bfc5ea0b6.zip
net: Define IP flag field values
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>
-rw-r--r--include/net.h6
-rw-r--r--net/net.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/include/net.h b/include/net.h
index a5a256bcd0..d2d394f0da 100644
--- a/include/net.h
+++ b/include/net.h
@@ -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))
diff --git a/net/net.c b/net/net.c
index 77e83b5bd0..cf1f4fa1f2 100644
--- 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;