|
@@ -858,7 +858,7 @@ netif_matches_ip6_addr(struct netif * netif, ip6_addr_t * ip6addr)
|
|
|
void
|
|
void
|
|
|
netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
|
|
netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
|
|
|
{
|
|
{
|
|
|
- u8_t i, addr_index;
|
|
|
|
|
|
|
+ u8_t i, addr_index, min_len;
|
|
|
|
|
|
|
|
/* Link-local prefix. */
|
|
/* Link-local prefix. */
|
|
|
netif->ip6_addr[0].addr[0] = PP_HTONL(0xfe800000ul);
|
|
netif->ip6_addr[0].addr[0] = PP_HTONL(0xfe800000ul);
|
|
@@ -881,8 +881,9 @@ netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit)
|
|
|
netif->ip6_addr[0].addr[2] = 0;
|
|
netif->ip6_addr[0].addr[2] = 0;
|
|
|
netif->ip6_addr[0].addr[3] = 0;
|
|
netif->ip6_addr[0].addr[3] = 0;
|
|
|
|
|
|
|
|
|
|
+ min_len = netif->hwaddr_len < 8 ? netif->hwaddr_len : 8;
|
|
|
addr_index = 3;
|
|
addr_index = 3;
|
|
|
- for (i = 0; i < 8; i++) {
|
|
|
|
|
|
|
+ for (i = 0; i < min_len; i++) {
|
|
|
if (i == 4) {
|
|
if (i == 4) {
|
|
|
addr_index--;
|
|
addr_index--;
|
|
|
}
|
|
}
|