Skip to content

Add Support to EUI-48 in gen_stateless_addr() of helpers.c #2

Description

@dgtlrift

I'm experimenting using raspberry pis and the gen_stateless_addr() prohibits any MAC other then EUI-64.

I've hacked it up to move forward:

diff --git a/helpers.c b/helpers.c
index 57156e4..a98261e 100644
--- a/helpers.c
+++ b/helpers.c
@@ -30,19 +30,26 @@ int gen_stateless_addr(const struct in6_prefix *prefix,
 
        memset(dst, 0, sizeof(*dst));
 
+       dlog(LOG_DEBUG, 5, "prefix->len = %d; llinfo->addr_len = %d", prefix->len, llinfo->addr_len );
+
        /* TODO only supported right now, gets tricky with bluetooth */
-       if (prefix->len != 64 || llinfo->addr_len != 8)
-               return -1;
+       if (prefix->len != 64 || ( llinfo->addr_len != 8
+                       // Handle Ethernet/Wi-Fi
+                       && llinfo->addr_len != 6 ) )
+               return( -1 );
 
        memcpy(dst, &prefix->prefix, len);
 
+       if ( 6 == llinfo->addr_len ) // if eth/wifi; skip 2 bytes
+               len+=2;
+
        for (i = 0; i < llinfo->addr_len; i++)
                dst->s6_addr[len + i] = llinfo->addr[i];
 
        /* U/L */
        dst->s6_addr[8] ^= 0x02;
 
-       return 0;
+       return( 0 );
 }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions