diff --git a/core/net/llsec/nullsec.c b/core/net/llsec/nullsec.c index cf9e2f215..4fc146ce5 100644 --- a/core/net/llsec/nullsec.c +++ b/core/net/llsec/nullsec.c @@ -43,7 +43,9 @@ */ #include "net/llsec/nullsec.h" +#include "net/mac/frame802154.h" #include "net/netstack.h" +#include "net/packetbuf.h" /*---------------------------------------------------------------------------*/ static void @@ -55,6 +57,7 @@ bootstrap(llsec_on_bootstrapped_t on_bootstrapped) static void send(mac_callback_t sent, void *ptr) { + packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, FRAME802154_DATAFRAME); NETSTACK_MAC.send(sent, ptr); } /*---------------------------------------------------------------------------*/ diff --git a/core/net/mac/framer-802154.c b/core/net/mac/framer-802154.c index ef6aaf1f0..9f97ff8a2 100644 --- a/core/net/mac/framer-802154.c +++ b/core/net/mac/framer-802154.c @@ -101,7 +101,7 @@ create_frame(int type, int do_create) } /* Build the FCF. */ - params.fcf.frame_type = FRAME802154_DATAFRAME; + params.fcf.frame_type = packetbuf_attr(PACKETBUF_ATTR_FRAME_TYPE); if(packetbuf_attr(PACKETBUF_ATTR_SECURITY_LEVEL)) { params.fcf.security_enabled = 1; } @@ -219,6 +219,8 @@ parse(void) hdr_len = frame802154_parse(packetbuf_dataptr(), packetbuf_datalen(), &frame); if(hdr_len && packetbuf_hdrreduce(hdr_len)) { + packetbuf_set_attr(PACKETBUF_ATTR_FRAME_TYPE, frame.fcf.frame_type); + if(frame.fcf.dest_addr_mode) { if(frame.dest_pid != mac_src_pan_id && frame.dest_pid != FRAME802154_BROADCASTPANDID) { diff --git a/core/net/packetbuf.h b/core/net/packetbuf.h index dfa99a92f..e3207102f 100644 --- a/core/net/packetbuf.h +++ b/core/net/packetbuf.h @@ -356,6 +356,7 @@ enum { PACKETBUF_ATTR_MAX_REXMIT, PACKETBUF_ATTR_NUM_REXMIT, PACKETBUF_ATTR_PENDING, + PACKETBUF_ATTR_FRAME_TYPE, PACKETBUF_ATTR_SECURITY_LEVEL, PACKETBUF_ATTR_FRAME_COUNTER_BYTES_0_1, PACKETBUF_ATTR_FRAME_COUNTER_BYTES_2_3,