support the use of null to signal absence of address

This commit is contained in:
Sebastien Lorquet 2015-08-12 22:26:57 +02:00
parent a371f09d85
commit 0d00a82c88

View File

@ -52,6 +52,10 @@ int ieee802154_addrstore(FAR struct ieee802154_packet_s *packet,
/* encode dest addr */
if(dest == NULL)
{
goto nodest;
}
if(dest->ia_len == 2)
{
memcpy(packet->data+index, &dest->ia_panid, 2);
@ -70,6 +74,7 @@ int ieee802154_addrstore(FAR struct ieee802154_packet_s *packet,
}
else if(dest->ia_len == 0)
{
nodest:
packet->data[1] = (packet->data[1] & ~IEEE802154_FC2_DADDR) | IEEE802154_DADDR_NONE;
}
else
@ -79,7 +84,7 @@ int ieee802154_addrstore(FAR struct ieee802154_packet_s *packet,
/* encode source pan id according to compression */
if( (dest->ia_len != 0) && (src->ia_len != 0) && (dest->ia_panid == src->ia_panid) )
if( (dest != NULL && dest->ia_len != 0) && (src != NULL && src->ia_len != 0) && (dest->ia_panid == src->ia_panid) )
{
packet->data[0] |= IEEE802154_FC1_INTRA;
}
@ -92,6 +97,10 @@ int ieee802154_addrstore(FAR struct ieee802154_packet_s *packet,
/* encode source addr */
if(src == NULL)
{
goto nosrc;
}
if(src->ia_len == 2)
{
memcpy(packet->data+index, &src->ia_saddr, 2);
@ -106,6 +115,7 @@ int ieee802154_addrstore(FAR struct ieee802154_packet_s *packet,
}
else if(dest->ia_len == 0)
{
nosrc:
packet->data[1] = (packet->data[1] & ~IEEE802154_FC2_SADDR) | IEEE802154_SADDR_NONE;
}
else