/*---------------------------------------------------------------------------*/ static void send(mac_callback_t sent, void *ptr) { struct akes_nbr_entry *entry; packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_DATAFRAME); if(packetbuf_holds_broadcast()) { if(!akes_nbr_count(AKES_NBR_PERMANENT)) { mac_call_sent_callback(sent, ptr, MAC_TX_ERR, 0); return; } adaptivesec_add_security_header(NULL); } else { entry = akes_nbr_get_receiver_entry(); if(!entry || !entry->permanent) { mac_call_sent_callback(sent, ptr, MAC_TX_ERR, 0); return; } adaptivesec_add_security_header(&entry->permanent->anti_replay_info); #if ANTI_REPLAY_WITH_SUPPRESSION packetbuf_set_attr(PACKETBUF_ATTR_NEIGHBOR_INDEX, entry->local_index); #endif /* ANTI_REPLAY_WITH_SUPPRESSION */ } #if !ANTI_REPLAY_WITH_SUPPRESSION && !POTR_ENABLED framer_802154_set_seqno(); #endif /* ANTI_REPLAY_WITH_SUPPRESSION && !POTR_ENABLED */ ADAPTIVESEC_STRATEGY.send(sent, ptr); }
/*---------------------------------------------------------------------------*/ static void send(mac_callback_t sent, void *ptr) { packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_DATAFRAME); framer_802154_set_seqno(); NETSTACK_MAC.send(sent, ptr); }
/*---------------------------------------------------------------------------*/ uint8_t * adaptivesec_prepare_command(uint8_t cmd_id, const linkaddr_t *dest) { uint8_t *payload; /* reset packetbuf */ packetbuf_clear(); payload = packetbuf_dataptr(); /* create frame */ packetbuf_set_addr(PACKETBUF_ADDR_RECEIVER, dest); packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_CMDFRAME); #if !ANTI_REPLAY_WITH_SUPPRESSION && !POTR_ENABLED framer_802154_set_seqno(); #endif /* !ANTI_REPLAY_WITH_SUPPRESSION && !POTR_ENABLED */ payload[0] = cmd_id; return payload + 1; }