[ipv6] Fix IPv6 checksum psuedo-header creation
authorMatthew Iselin <matthew@theiselins.net>
Wed, 22 Jun 2011 11:08:46 +0000 (21:08 +1000)
committerMarty Connor <mdc@etherboot.org>
Thu, 21 Jul 2011 02:15:46 +0000 (22:15 -0400)
Signed-off-by: Matthew Iselin <matthew@theiselins.net>
Signed-off-by: Marty Connor <mdc@etherboot.org>
src/net/ipv6.c

index a58b5fc..fe8c7af 100644 (file)
@@ -216,7 +216,7 @@ static uint16_t ipv6_tx_csum ( struct io_buffer *iobuf, uint16_t csum ) {
        memset ( &pshdr, 0, sizeof ( pshdr ) );
        pshdr.src = ip6hdr->src;
        pshdr.dest = ip6hdr->dest;
-       pshdr.len = htons ( iob_len ( iobuf ) - sizeof ( *ip6hdr ) );
+       pshdr.len = ip6hdr->payload_len;
        pshdr.nxt_hdr = ip6hdr->nxt_hdr;
 
        /* Update checksum value */
@@ -411,7 +411,6 @@ static int ipv6_process_nxt_hdr ( struct io_buffer *iobuf, uint8_t nxt_hdr,
 static int ipv6_rx ( struct io_buffer *iobuf,
                     __unused struct net_device *netdev,
                     __unused const void *ll_source ) {
-
        struct ip6_header *ip6hdr = iobuf->data;
        union {
                struct sockaddr_in6 sin6;