6LoWPAN: Just adds more debug output
This commit is contained in:
parent
922454d515
commit
4a517ad48d
@ -480,7 +480,7 @@ Configurations
|
|||||||
COMPRESSION ADDRESSING UDP TCP
|
COMPRESSION ADDRESSING UDP TCP
|
||||||
----------- ---------- ---- ----
|
----------- ---------- ---- ----
|
||||||
hc06 short 6/21 ---
|
hc06 short 6/21 ---
|
||||||
extended --- ---
|
extended 6/22 ---
|
||||||
hc1 short --- ---
|
hc1 short --- ---
|
||||||
extended --- ---
|
extended --- ---
|
||||||
ipv6 short --- ---
|
ipv6 short --- ---
|
||||||
|
@ -553,7 +553,7 @@ bool net_ipv6addr_maskcmp(const net_ipv6addr_t addr1,
|
|||||||
* Name: net_is_addr_unspecified
|
* Name: net_is_addr_unspecified
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Is Ithe Pv6 address the unspecified address?
|
* Is Ithe IPv6 address the unspecified address?
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -110,11 +110,11 @@ static FAR uint8_t *g_hc06ptr;
|
|||||||
*
|
*
|
||||||
* 0 -> 16 bytes from packet
|
* 0 -> 16 bytes from packet
|
||||||
* 1 -> 2 bytes from prefix - 16 bytes from packet
|
* 1 -> 2 bytes from prefix - 16 bytes from packet
|
||||||
* 2 -> 2 bytes from prefix - 0000::00ff:fe00:XXXX from packet
|
* 2 -> 2 bytes from prefix - 0000::00ff:fe00:XXXX and 2 bytes from packet
|
||||||
* 3 -> 2 bytes from prefix - Infer 2 or 8 bytes from MAC address
|
* 3 -> 2 bytes from prefix - Infer 2 or 8 bytes from MAC address
|
||||||
*
|
*
|
||||||
* NOTE: => the uncompress function does change 0xf to 0x10
|
* NOTE: ipaddr=the uncompress function does change 0xf to 0x10
|
||||||
* NOTE: 0x00 => no-autoconfig => unspecified
|
* NOTE: 0x00 ipaddr=no-autoconfig ipaddr=unspecified
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const uint16_t g_unc_llconf[] =
|
static const uint16_t g_unc_llconf[] =
|
||||||
@ -199,7 +199,7 @@ static FAR struct sixlowpan_addrcontext_s *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: find_addrcontext_bynumber
|
* Name: find_addrcontext_byprefix
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Find the address context corresponding to the prefix ipaddr.
|
* Find the address context corresponding to the prefix ipaddr.
|
||||||
@ -228,7 +228,7 @@ static FAR struct sixlowpan_addrcontext_s *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: comporess_ipaddr, compress_tagaddr, and compress_laddr
|
* Name: compress_ipaddr, compress_tagaddr, and compress_laddr
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Uncompress addresses based on a prefix and a postfix with zeroes in
|
* Uncompress addresses based on a prefix and a postfix with zeroes in
|
||||||
@ -236,7 +236,7 @@ static FAR struct sixlowpan_addrcontext_s *
|
|||||||
* to configure the IP address (autoconf style).
|
* to configure the IP address (autoconf style).
|
||||||
*
|
*
|
||||||
* prefpost takes a byte where the first nibble specify prefix count
|
* prefpost takes a byte where the first nibble specify prefix count
|
||||||
* and the second postfix count (NOTE: 15/0xf => 16 bytes copy).
|
* and the second postfix count (NOTE: 15/0xf ipaddr=16 bytes copy).
|
||||||
*
|
*
|
||||||
* compress_tagaddr() accepts a remote, variable length, taged MAC address;
|
* compress_tagaddr() accepts a remote, variable length, taged MAC address;
|
||||||
* compress_laddr() accepts a local, fixed length MAC address.
|
* compress_laddr() accepts a local, fixed length MAC address.
|
||||||
@ -269,34 +269,71 @@ static uint8_t compress_tagaddr(FAR const net_ipv6addr_t ipaddr,
|
|||||||
FAR const struct sixlowpan_tagaddr_s *macaddr,
|
FAR const struct sixlowpan_tagaddr_s *macaddr,
|
||||||
uint8_t bitpos)
|
uint8_t bitpos)
|
||||||
{
|
{
|
||||||
ninfo("ipaddr=%p macaddr=%p extended=%u bitpos=%u g_hc06ptr=%p\n",
|
uint8_t tag;
|
||||||
ipaddr, macaddr, macaddr->extended, bitpos, g_hc06ptr);
|
|
||||||
|
|
||||||
if (sixlowpan_ismacbased(ipaddr, macaddr))
|
ninfo("Compressing bitpos=%u extended=%u\n", bitpos, macaddr->extended);
|
||||||
|
ninfo(" ipaddr=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
|
||||||
|
ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
|
||||||
|
ipaddr[4], ipaddr[5], ipaddr[6], ipaddr[7]);
|
||||||
|
|
||||||
|
if (macaddr->extended)
|
||||||
{
|
{
|
||||||
return 3 << bitpos; /* 0-bits */
|
ninfo(" eaddr=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||||
|
macaddr->u.eaddr.u8[0], macaddr->u.eaddr.u8[1],
|
||||||
|
macaddr->u.eaddr.u8[2], macaddr->u.eaddr.u8[3],
|
||||||
|
macaddr->u.eaddr.u8[4], macaddr->u.eaddr.u8[5],
|
||||||
|
macaddr->u.eaddr.u8[6], macaddr->u.eaddr.u8[7]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return compress_ipaddr(ipaddr, bitpos);
|
ninfo(" saddr=%02x:%02x\n",
|
||||||
|
macaddr->u.saddr.u8[0], macaddr->u.saddr.u8[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sixlowpan_ismacbased(ipaddr, macaddr))
|
||||||
|
{
|
||||||
|
tag = (3 << bitpos); /* 0-bits */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tag = compress_ipaddr(ipaddr, bitpos);
|
||||||
|
}
|
||||||
|
|
||||||
|
ninfo("Tag=%02x\n", tag);
|
||||||
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t compress_laddr(FAR const net_ipv6addr_t ipaddr,
|
static uint8_t compress_laddr(FAR const net_ipv6addr_t ipaddr,
|
||||||
FAR const struct sixlowpan_addr_s *macaddr,
|
FAR const struct sixlowpan_addr_s *macaddr,
|
||||||
uint8_t bitpos)
|
uint8_t bitpos)
|
||||||
{
|
{
|
||||||
ninfo("ipaddr=%p macaddr=%p bitpos=%u g_hc06ptr=%p\n",
|
uint8_t tag;
|
||||||
ipaddr, macaddr, bitpos, g_hc06ptr);
|
|
||||||
|
ninfo("Compressing bitpos=%u\n", bitpos);
|
||||||
|
ninfo(" ipaddr=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
|
||||||
|
ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
|
||||||
|
ipaddr[4], ipaddr[5], ipaddr[6], ipaddr[7]);
|
||||||
|
|
||||||
|
#ifdef CONFIG_NET_6LOWPAN_EXTENDEDADDR
|
||||||
|
ninfo(" eaddr=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||||
|
macaddr->u8[0], macaddr->u8[1], macaddr->u8[2], macaddr->u8[3],
|
||||||
|
macaddr->u8[4], macaddr->u8[5], macaddr->u8[6], macaddr->u8[7]);
|
||||||
|
#else
|
||||||
|
ninfo(" saddr=%02x:%02x\n",
|
||||||
|
macaddr->u8[0], macaddr->u8[1]);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (sixlowpan_isaddrbased(ipaddr, macaddr))
|
if (sixlowpan_isaddrbased(ipaddr, macaddr))
|
||||||
{
|
{
|
||||||
return 3 << bitpos; /* 0-bits */
|
tag = (3 << bitpos); /* 0-bits */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return compress_ipaddr(ipaddr, bitpos);
|
tag = compress_ipaddr(ipaddr, bitpos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ninfo("Tag=%02x\n", tag);
|
||||||
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -308,7 +345,7 @@ static uint8_t compress_laddr(FAR const net_ipv6addr_t ipaddr,
|
|||||||
* to configure the IP address (autoconf style).
|
* to configure the IP address (autoconf style).
|
||||||
*
|
*
|
||||||
* prefpost takes a byte where the first nibble specify prefix count
|
* prefpost takes a byte where the first nibble specify prefix count
|
||||||
* and the second postfix count (NOTE: 15/0xf => 16 bytes copy).
|
* and the second postfix count (NOTE: 15/0xf ipaddr=16 bytes copy).
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
@ -377,7 +414,7 @@ static void uncompress_addr(FAR const struct ieee802154_addr_s *addr,
|
|||||||
{
|
{
|
||||||
if (postcount == 2 && prefcount < 11)
|
if (postcount == 2 && prefcount < 11)
|
||||||
{
|
{
|
||||||
/* 16 bits uncompression => 0000:00ff:fe00:XXXX */
|
/* 16 bits uncompression ipaddr=0000:00ff:fe00:XXXX */
|
||||||
|
|
||||||
ipaddr[5] = HTONS(0x00ff);
|
ipaddr[5] = HTONS(0x00ff);
|
||||||
ipaddr[6] = HTONS(0xfe00);
|
ipaddr[6] = HTONS(0xfe00);
|
||||||
@ -423,12 +460,12 @@ static void uncompress_addr(FAR const struct ieee802154_addr_s *addr,
|
|||||||
}
|
}
|
||||||
else if (prefcount > 0)
|
else if (prefcount > 0)
|
||||||
{
|
{
|
||||||
/* No IID based configuration if no prefix and no data => unspec */
|
/* No IID based configuration if no prefix and no data ipaddr=unspec */
|
||||||
|
|
||||||
nwarn("WARNING: No IID based configuration\n");
|
nwarn("WARNING: No IID based configuration\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
ninfo("Uncompressing %d + %d => %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04\n",
|
ninfo("Uncompressing %d + %d ipaddr=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
|
||||||
prefcount, postcount,
|
prefcount, postcount,
|
||||||
ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
|
ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
|
||||||
ipaddr[4], ipaddr[5], ipaddr[6], ipaddr[7]);
|
ipaddr[4], ipaddr[5], ipaddr[6], ipaddr[7]);
|
||||||
@ -707,7 +744,7 @@ void sixlowpan_compresshdr_hc06(FAR struct ieee802154_driver_s *ieee,
|
|||||||
|
|
||||||
if (net_is_addr_unspecified(ipv6->srcipaddr))
|
if (net_is_addr_unspecified(ipv6->srcipaddr))
|
||||||
{
|
{
|
||||||
ninfo("Compressing unspecified. Setting SAC\n");
|
ninfo("Compressing unspecified srcipaddr. Setting SAC\n");
|
||||||
|
|
||||||
iphc1 |= SIXLOWPAN_IPHC_SAC;
|
iphc1 |= SIXLOWPAN_IPHC_SAC;
|
||||||
iphc1 |= SIXLOWPAN_IPHC_SAM_128;
|
iphc1 |= SIXLOWPAN_IPHC_SAM_128;
|
||||||
@ -741,7 +778,12 @@ void sixlowpan_compresshdr_hc06(FAR struct ieee802154_driver_s *ieee,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Send the full address => SAC = 0, SAM = 00 */
|
/* Send the full address ipaddr: SAC = 0, SAM = 00 */
|
||||||
|
|
||||||
|
ninfo("Uncompressable srcipaddr=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
|
||||||
|
ipv6->srcipaddr[0], ipv6->srcipaddr[1], ipv6->srcipaddr[2],
|
||||||
|
ipv6->srcipaddr[3], ipv6->srcipaddr[4], ipv6->srcipaddr[5],
|
||||||
|
ipv6->srcipaddr[6], ipv6->srcipaddr[7]);
|
||||||
|
|
||||||
iphc1 |= SIXLOWPAN_IPHC_SAM_128; /* 128-bits */
|
iphc1 |= SIXLOWPAN_IPHC_SAM_128; /* 128-bits */
|
||||||
memcpy(g_hc06ptr, ipv6->srcipaddr, 16);
|
memcpy(g_hc06ptr, ipv6->srcipaddr, 16);
|
||||||
@ -813,9 +855,10 @@ void sixlowpan_compresshdr_hc06(FAR struct ieee802154_driver_s *ieee,
|
|||||||
|
|
||||||
iphc1 |= compress_tagaddr(ipv6->destipaddr, destmac,
|
iphc1 |= compress_tagaddr(ipv6->destipaddr, destmac,
|
||||||
SIXLOWPAN_IPHC_DAM_BIT);
|
SIXLOWPAN_IPHC_DAM_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
/* No address context found for this address */
|
/* No address context found for this address */
|
||||||
}
|
|
||||||
else if (net_is_addr_linklocal(ipv6->destipaddr) &&
|
else if (net_is_addr_linklocal(ipv6->destipaddr) &&
|
||||||
ipv6->destipaddr[1] == 0 && ipv6->destipaddr[2] == 0 &&
|
ipv6->destipaddr[1] == 0 && ipv6->destipaddr[2] == 0 &&
|
||||||
ipv6->destipaddr[3] == 0)
|
ipv6->destipaddr[3] == 0)
|
||||||
@ -823,10 +866,11 @@ void sixlowpan_compresshdr_hc06(FAR struct ieee802154_driver_s *ieee,
|
|||||||
iphc1 |= compress_tagaddr(ipv6->destipaddr, destmac,
|
iphc1 |= compress_tagaddr(ipv6->destipaddr, destmac,
|
||||||
SIXLOWPAN_IPHC_DAM_BIT);
|
SIXLOWPAN_IPHC_DAM_BIT);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Send the full address */
|
/* Send the full address */
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
iphc1 |= SIXLOWPAN_IPHC_DAM_128; /* 128-bits */
|
iphc1 |= SIXLOWPAN_IPHC_DAM_128; /* 128-bits */
|
||||||
memcpy(g_hc06ptr, ipv6->destipaddr, 16);
|
memcpy(g_hc06ptr, ipv6->destipaddr, 16);
|
||||||
g_hc06ptr += 16;
|
g_hc06ptr += 16;
|
||||||
@ -1179,7 +1223,7 @@ void sixlowpan_uncompresshdr_hc06(FAR const struct ieee802154_data_ind_s *ind,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Not address context based => link local M = 0, DAC = 0 - same
|
/* Not address context based ipaddr=link local M = 0, DAC = 0 - same
|
||||||
* as SAC.
|
* as SAC.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user