Merged in antmerlino/apps/i8sak-eaddr2ip-fix (pull request #196)

i8sak: Fixes conversion from extended address to IPv6 address.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
Anthony Merlino 2019-08-13 21:19:53 +00:00 committed by Gregory Nutt
parent ba5b1c78da
commit 144a0180e2
2 changed files with 12 additions and 17 deletions

View File

@ -262,36 +262,31 @@ static inline void i8sak_cmd_error(FAR struct i8sak_s *i8sak)
#ifdef CONFIG_NET_6LOWPAN
static inline void i8sak_update_ep_ip(FAR struct i8sak_s *i8sak)
{
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[0] = HTONS(0xfe80);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[1] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[2] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[3] = 0;
if (i8sak->ep_addr.mode == IEEE802154_ADDRMODE_EXTENDED)
{
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[0] = HTONS(0xfe80);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[1] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[2] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[3] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[4] =
((uint16_t)i8sak->ep_addr.eaddr[0] << 8 | (uint16_t)i8sak->ep_addr.eaddr[1]);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[4] =
HTONS(((uint16_t)i8sak->ep_addr.eaddr[0] << 8 | (uint16_t)i8sak->ep_addr.eaddr[1]));
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[5] =
((uint16_t)i8sak->ep_addr.eaddr[2] << 8 | (uint16_t)i8sak->ep_addr.eaddr[3]);
HTONS(((uint16_t)i8sak->ep_addr.eaddr[2] << 8 | (uint16_t)i8sak->ep_addr.eaddr[3]));
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[6] =
((uint16_t)i8sak->ep_addr.eaddr[4] << 8 | (uint16_t)i8sak->ep_addr.eaddr[5]);
HTONS(((uint16_t)i8sak->ep_addr.eaddr[4] << 8 | (uint16_t)i8sak->ep_addr.eaddr[5]));
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[7] =
((uint16_t)i8sak->ep_addr.eaddr[6] << 8 | (uint16_t)i8sak->ep_addr.eaddr[7]);
HTONS(((uint16_t)i8sak->ep_addr.eaddr[6] << 8 | (uint16_t)i8sak->ep_addr.eaddr[7]));
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[4] ^= 0x200;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[4] ^= HTONS(0x0200);
}
else
{
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[0] = HTONS(0xfe80);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[1] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[2] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[3] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[4] = 0;
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[5] = HTONS(0x00ff);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[6] = HTONS(0xfe00);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[7] =
((uint16_t)i8sak->ep_addr.saddr[0] << 8 | (uint16_t)i8sak->ep_addr.saddr[1]);
i8sak->ep_in6addr.sin6_addr.in6_u.u6_addr16[7] ^= 0x200;
}
}
#endif

View File

@ -349,7 +349,7 @@ void i8sak_get_cmd(FAR struct i8sak_s *i8sak, int argc, FAR char *argv[])
else if (strcmp(argv[argind], "maxretries") == 0)
{
sixlowpan_getmaxretries(fd, i8sak->ifname, &u.attr.mac.max_retries);
printf("i8sak: Transmit Power: %d\n", (int)u.attr.mac.max_retries);
printf("i8sak: Max Retries: %d\n", (int)u.attr.mac.max_retries);
}
else if (strcmp(argv[argind], "promisc") == 0)
{