]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[ipv6] Treat sin6_scope_id consistently
authorMichael Brown <mcb30@ipxe.org>
Fri, 25 Oct 2013 12:48:18 +0000 (13:48 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 25 Oct 2013 12:49:51 +0000 (13:49 +0100)
sin6_scope_id is never exposed outside of the local system, and so
should be a native-endian quantity.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/ipv6.c
src/net/ndp.c

index 4cd6720924b51a7f079f309c0b033584448709b5..dcaad3714ec90aad4cb2c3b99fae0ac081abea01 100644 (file)
@@ -386,7 +386,7 @@ static int ipv6_tx ( struct io_buffer *iobuf,
                         sizeof ( iphdr->src ) );
        }
        if ( ( ! IN6_IS_ADDR_MULTICAST ( next_hop ) ) &&
-            ( ( miniroute = ipv6_route ( ntohl ( sin6_dest->sin6_scope_id ),
+            ( ( miniroute = ipv6_route ( sin6_dest->sin6_scope_id,
                                          &next_hop ) ) != NULL ) ) {
                memcpy ( &iphdr->src, &miniroute->address,
                         sizeof ( iphdr->src ) );
@@ -599,12 +599,12 @@ static int ipv6_rx ( struct io_buffer *iobuf, struct net_device *netdev,
        src.sin6.sin6_family = AF_INET6;
        memcpy ( &src.sin6.sin6_addr, &iphdr->src,
                 sizeof ( src.sin6.sin6_addr ) );
-       src.sin6.sin6_scope_id = htonl ( netdev->index );
+       src.sin6.sin6_scope_id = netdev->index;
        memset ( &dest, 0, sizeof ( dest ) );
        dest.sin6.sin6_family = AF_INET6;
        memcpy ( &dest.sin6.sin6_addr, &iphdr->dest,
                 sizeof ( dest.sin6.sin6_addr ) );
-       dest.sin6.sin6_scope_id = htonl ( netdev->index );
+       dest.sin6.sin6_scope_id = netdev->index;
        iob_pull ( iobuf, hdrlen );
        pshdr_csum = ipv6_pshdr_chksum ( iphdr, iob_len ( iobuf ),
                                         next_header, TCPIP_EMPTY_CSUM );
index cc57478a48e45a3b1d5a7c4801c9a0eb7873594b..c440435d168483d12e5198767f6f9a65b1f0180e 100644 (file)
@@ -119,12 +119,12 @@ static int ndp_tx_request ( struct net_device *netdev,
        sin6_src.sin6_family = AF_INET6;
        memcpy ( &sin6_src.sin6_addr, net_source,
                 sizeof ( sin6_src.sin6_addr ) );
-       sin6_src.sin6_scope_id = htons ( netdev->index );
+       sin6_src.sin6_scope_id = netdev->index;
 
        /* Construct multicast destination address */
        memset ( &sin6_dest, 0, sizeof ( sin6_dest ) );
        sin6_dest.sin6_family = AF_INET6;
-       sin6_dest.sin6_scope_id = htons ( netdev->index );
+       sin6_dest.sin6_scope_id = netdev->index;
        ipv6_solicited_node ( &sin6_dest.sin6_addr, net_dest );
 
        /* Transmit neighbour discovery packet */