47 #include "contiki-net.h" 53 clock_time_t timestamp;
57 #ifdef NETSTACK_CONF_MAC_SEQNO_MAX_AGE 58 #define SEQNO_MAX_AGE NETSTACK_CONF_MAC_SEQNO_MAX_AGE 60 #define SEQNO_MAX_AGE (20 * CLOCK_SECOND) 63 #ifdef NETSTACK_CONF_MAC_SEQNO_HISTORY 64 #define MAX_SEQNOS NETSTACK_CONF_MAC_SEQNO_HISTORY 68 static struct seqno received_seqnos[MAX_SEQNOS];
81 for(i = 0; i < MAX_SEQNOS; ++i) {
83 &received_seqnos[i].sender)) {
84 if(packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO) == received_seqnos[i].seqno) {
86 if(now - received_seqnos[i].timestamp <= SEQNO_MAX_AGE) {
106 for(i = 0; i < MAX_SEQNOS; ++i) {
108 &received_seqnos[i].sender)) {
115 for(j = i - 1; j > 0; --j) {
116 memcpy(&received_seqnos[j], &received_seqnos[j - 1],
sizeof(
struct seqno));
118 received_seqnos[0].seqno = packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO);
121 packetbuf_addr(PACKETBUF_ADDR_SENDER));
int mac_sequence_is_duplicate(void)
Tell whether the packetbuf is a duplicate packet.
Header file for MAC sequence numbers management
clock_time_t clock_time(void)
Get the current clock time.
void linkaddr_copy(linkaddr_t *dest, const linkaddr_t *src)
Copy a link-layer address.
int linkaddr_cmp(const linkaddr_t *addr1, const linkaddr_t *addr2)
Compare two link-layer addresses.
Header file for the Packet buffer (packetbuf) management
void mac_sequence_register_seqno(void)
Register the sequence number of the packetbuf.