-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
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 );
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels