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