/*---------------------------------------------------------------------------*/ static void send(mac_callback_t sent, void *ptr) { add_security_header(); anti_replay_set_counter(); NETSTACK_MAC.send(sent, ptr); }
/*---------------------------------------------------------------------------*/ static void add_security_header(void) { if(!packetbuf_attr(PACKETBUF_ATTR_SECURITY_LEVEL)) { packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_DATAFRAME); packetbuf_set_attr(PACKETBUF_ATTR_SECURITY_LEVEL, LLSEC802154_SECURITY_LEVEL); anti_replay_set_counter(); } }
/*---------------------------------------------------------------------------*/ static void add_security_header(void) { if(!packetbuf_attr(PACKETBUF_ATTR_SECURITY_LEVEL)) { packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_DATAFRAME); packetbuf_set_attr(PACKETBUF_ATTR_SECURITY_ENABLED, 1); packetbuf_set_attr(PACKETBUF_ATTR_SECURITY_LEVEL, SEC_LVL); packetbuf_set_attr(PACKETBUF_ATTR_MAC_SEQNO, seqno++); anti_replay_set_counter(NULL); } }
/*---------------------------------------------------------------------------*/ void adaptivesec_add_security_header(struct anti_replay_info *receiver_info) { if(!anti_replay_set_counter(receiver_info)) { watchdog_reboot(); } #if ANTI_REPLAY_WITH_SUPPRESSION anti_replay_suppress_counter(); #else /* ANTI_REPLAY_WITH_SUPPRESSION */ packetbuf_set_attr(PACKETBUF_ATTR_SECURITY_LEVEL, adaptivesec_get_sec_lvl()); #endif /* ANTI_REPLAY_WITH_SUPPRESSION */ }