aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/ipv4.c
diff options
context:
space:
mode:
authorMichael Brown <mcb30@etherboot.org>2006-08-09 11:52:53 +0000
committerMichael Brown <mcb30@etherboot.org>2006-08-09 11:52:53 +0000
commit867c7aef5935be3b78db7765cb5cd14d3e42b189 (patch)
tree7337afc91524ee4f20a2eee4c9427acb21cdbbf1 /src/net/ipv4.c
parentee9ae8130a7acfbc6a96dd86cf6cf62569e68169 (diff)
downloadipxe-867c7aef5935be3b78db7765cb5cd14d3e42b189.tar.gz
iphdr->hlen includes the IP header, so truncate packet *before*
stripping the header. Also fix an htons/ntohs confusion.
Diffstat (limited to 'src/net/ipv4.c')
-rw-r--r--src/net/ipv4.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/net/ipv4.c b/src/net/ipv4.c
index 5f10d684..05a00194 100644
--- a/src/net/ipv4.c
+++ b/src/net/ipv4.c
@@ -441,8 +441,8 @@ static int ipv4_rx ( struct pk_buff *pkb, struct net_device *netdev __unused,
dest.sin.sin_addr = iphdr->dest;
/* Strip header */
+ pkb_unput ( pkb, pkb_len ( pkb ) - ntohs ( iphdr->len ) );
pkb_pull ( pkb, sizeof ( *iphdr ) );
- pkb_unput ( pkb, pkb_len ( pkb ) - htons ( iphdr->len ) );
/* Send it to the transport layer */
return tcpip_rx ( pkb, iphdr->protocol, &src.st, &dest.st );