From 0aa448f190e45f0344392459ba681e924670215f Mon Sep 17 00:00:00 2001 From: Adam Dunkels Date: Sun, 28 Jul 2013 22:32:09 +0200 Subject: [PATCH 1/3] 6lowpan fragmentation bugfix: the 6lowpan code had an unfortunate interaction with the behavior of the rdc layer. If the first packet of a fragment transmission was lost, the remaining packets would get dropped on reception. Moreover, the reception code contained a bug that sometimes would cause fragments to be misidentified as fragments. Taken together, these problems would result in a pathelogical network breakdown if too many fragmented packets would occur simultaneously. --- core/net/mac/nullrdc.c | 59 +++++++++++++++++++++++++++++++++--------- core/net/sicslowpan.c | 26 +++++++++++++++++++ 2 files changed, 73 insertions(+), 12 deletions(-) diff --git a/core/net/mac/nullrdc.c b/core/net/mac/nullrdc.c index ed497c327..ff367cf63 100644 --- a/core/net/mac/nullrdc.c +++ b/core/net/mac/nullrdc.c @@ -119,10 +119,12 @@ static struct seqno received_seqnos[MAX_SEQNOS]; #endif /* NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW */ /*---------------------------------------------------------------------------*/ -static void -send_packet(mac_callback_t sent, void *ptr) +static int +send_one_packet(mac_callback_t sent, void *ptr) { int ret; + int last_sent_ok = 0; + packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &rimeaddr_node_addr); #if NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1); @@ -228,22 +230,49 @@ send_packet(mac_callback_t sent, void *ptr) #endif /* ! NULLRDC_802154_AUTOACK */ } + if(ret == MAC_TX_OK) { + last_sent_ok = 1; + } mac_call_sent_callback(sent, ptr, ret, 1); + return last_sent_ok; +} +/*---------------------------------------------------------------------------*/ +static void +send_packet(mac_callback_t sent, void *ptr) +{ + send_one_packet(sent, ptr); } /*---------------------------------------------------------------------------*/ static void send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list) { while(buf_list != NULL) { + /* We backup the next pointer, as it may be nullified by + * mac_call_sent_callback() */ + struct rdc_buf_list *next = buf_list->next; + int last_sent_ok; + queuebuf_to_packetbuf(buf_list->buf); - send_packet(sent, ptr); - buf_list = buf_list->next; + last_sent_ok = send_one_packet(sent, ptr); + + /* If packet transmission was not successful, we should back off and let + * upper layers retransmit, rather than potentially sending out-of-order + * packet fragments. */ + if(!last_sent_ok) { + return; + } + buf_list = next; } } /*---------------------------------------------------------------------------*/ static void packet_input(void) { + int original_datalen; + uint8_t *original_dataptr; + + original_datalen = packetbuf_datalen(); + original_dataptr = packetbuf_dataptr(); #ifdef NETSTACK_DECRYPT NETSTACK_DECRYPT(); #endif /* NETSTACK_DECRYPT */ @@ -264,6 +293,8 @@ packet_input(void) PRINTF("nullrdc: not for us\n"); #endif /* NULLRDC_ADDRESS_FILTER */ } else { + int duplicate = 0; + #if NULLRDC_802154_AUTOACK || NULLRDC_802154_AUTOACK_HW /* Check for duplicate packet by comparing the sequence number of the incoming packet with the last few ones we saw. */ @@ -275,16 +306,18 @@ packet_input(void) /* Drop the packet. */ PRINTF("nullrdc: drop duplicate link layer packet %u\n", packetbuf_attr(PACKETBUF_ATTR_PACKET_ID)); - return; + duplicate = 1; } } - for(i = MAX_SEQNOS - 1; i > 0; --i) { - memcpy(&received_seqnos[i], &received_seqnos[i - 1], - sizeof(struct seqno)); + if(!duplicate) { + for(i = MAX_SEQNOS - 1; i > 0; --i) { + memcpy(&received_seqnos[i], &received_seqnos[i - 1], + sizeof(struct seqno)); + } + received_seqnos[0].seqno = packetbuf_attr(PACKETBUF_ATTR_PACKET_ID); + rimeaddr_copy(&received_seqnos[0].sender, + packetbuf_addr(PACKETBUF_ADDR_SENDER)); } - received_seqnos[0].seqno = packetbuf_attr(PACKETBUF_ATTR_PACKET_ID); - rimeaddr_copy(&received_seqnos[0].sender, - packetbuf_addr(PACKETBUF_ADDR_SENDER)); #endif /* NULLRDC_802154_AUTOACK */ #if NULLRDC_SEND_802154_ACK @@ -304,7 +337,9 @@ packet_input(void) } } #endif /* NULLRDC_SEND_ACK */ - NETSTACK_MAC.input(); + if(!duplicate) { + NETSTACK_MAC.input(); + } } } /*---------------------------------------------------------------------------*/ diff --git a/core/net/sicslowpan.c b/core/net/sicslowpan.c index 78bc0dceb..ca55ee9ec 100644 --- a/core/net/sicslowpan.c +++ b/core/net/sicslowpan.c @@ -1590,6 +1590,7 @@ input(void) uint16_t frag_size = 0; /* offset of the fragment in the IP packet */ uint8_t frag_offset = 0; + uint8_t is_fragment = 0; #if SICSLOWPAN_CONF_FRAG /* tag of the fragment */ uint16_t frag_tag = 0; @@ -1626,6 +1627,7 @@ input(void) rime_hdr_len += SICSLOWPAN_FRAG1_HDR_LEN; /* printf("frag1 %d %d\n", reass_tag, frag_tag);*/ first_fragment = 1; + is_fragment = 1; break; case SICSLOWPAN_DISPATCH_FRAGN: /* @@ -1648,11 +1650,29 @@ input(void) if(processed_ip_in_len + packetbuf_datalen() - rime_hdr_len >= frag_size) { last_fragment = 1; } + is_fragment = 1; break; default: break; } + /* We are currently reassembling a packet, but have just received the first + * fragment of another packet. We can either ignore it and hope to receive + * the rest of the under-reassembly packet fragments, or we can discard the + * previous packet altogether, and start reassembling the new packet. + * + * We discard the previous packet, and start reassembling the new packet. + * This lessens the negative impacts of too high SICSLOWPAN_REASS_MAXAGE. + */ +#define PRIORITIZE_NEW_PACKETS 1 +#if PRIORITIZE_NEW_PACKETS + if(processed_ip_in_len > 0 && first_fragment + && !rimeaddr_cmp(&frag_sender, packetbuf_addr(PACKETBUF_ADDR_SENDER))) { + sicslowpan_len = 0; + processed_ip_in_len = 0; + } +#endif /* PRIORITIZE_NEW_PACKETS */ + if(processed_ip_in_len > 0) { /* reassembly is ongoing */ /* printf("frag %d %d\n", reass_tag, frag_tag);*/ @@ -1674,6 +1694,12 @@ input(void) * start it if we received a fragment */ if((frag_size > 0) && (frag_size <= UIP_BUFSIZE)) { + /* We are currently not reassembling a packet, but have received a packet fragment + * that is not the first one. */ + if(is_fragment && !first_fragment) { + return; + } + sicslowpan_len = frag_size; reass_tag = frag_tag; timer_set(&reass_timer, SICSLOWPAN_REASS_MAXAGE * CLOCK_SECOND / 16); From f5307fc01e710d94a5e595f891bd7453f8bced1a Mon Sep 17 00:00:00 2001 From: Adam Dunkels Date: Sun, 28 Jul 2013 22:38:18 +0200 Subject: [PATCH 2/3] Bugfix: must set the SICSLOWPAM_MAX_MAC_TRANSMISSIONS attribute after clearing the buffer, otherwise it will not be used for outoing packets. --- core/net/sicslowpan.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/net/sicslowpan.c b/core/net/sicslowpan.c index ca55ee9ec..ad9cc96c8 100644 --- a/core/net/sicslowpan.c +++ b/core/net/sicslowpan.c @@ -1445,6 +1445,11 @@ output(uip_lladdr_t *localdest) framer_hdrlen = 21; } packetbuf_clear(); + + /* We must set the max transmissions attribute again after clearing + the buffer. */ + packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, + SICSLOWPAN_MAX_MAC_TRANSMISSIONS); #else /* USE_FRAMER_HDRLEN */ framer_hdrlen = 21; #endif /* USE_FRAMER_HDRLEN */ From b6770b9de8466db6edb8bb45a16a0d83b5dda5e4 Mon Sep 17 00:00:00 2001 From: Adam Dunkels Date: Sat, 27 Jul 2013 13:48:54 +0200 Subject: [PATCH 3/3] Added regression tests that test IPv6 fragmentation --- ...4-exp5438-udp-fragmentation-contikimac.csc | 166 ++++++++++++++++++ .../05-exp5438-udp-fragmentation-nullrdc.csc | 166 ++++++++++++++++++ ...-fragmentation-contikimac-large-sender.csc | 165 +++++++++++++++++ ...udp-fragmentation-nullrdc-large-sender.csc | 166 ++++++++++++++++++ ...gmentation-contikimac-too-large-sender.csc | 166 ++++++++++++++++++ ...fragmentation-nullrdc-too-large-sender.csc | 165 +++++++++++++++++ ...p5438-unicast-fragmentation-contikimac.csc | 166 ++++++++++++++++++ ...-exp5438-unicast-fragmentation-nullrdc.csc | 166 ++++++++++++++++++ ...-fragmentation-contikimac-large-sender.csc | 165 +++++++++++++++++ ...ast-fragmentation-nullrdc-large-sender.csc | 166 ++++++++++++++++++ ...gmentation-contikimac-too-large-sender.csc | 166 ++++++++++++++++++ ...fragmentation-nullrdc-too-large-sender.csc | 165 +++++++++++++++++ ...ollect.csc => 16-sky-ipv6-rpl-collect.csc} | 0 .../11-ipv6/code/receiver/Makefile | 7 + .../11-ipv6/code/receiver/project-conf.h | 6 + .../11-ipv6/code/receiver/udp-receiver.c | 66 +++++++ regression-tests/11-ipv6/code/sender/Makefile | 7 + .../11-ipv6/code/sender/project-conf.h | 6 + .../11-ipv6/code/sender/udp-sender.c | 61 +++++++ .../11-ipv6/code/sender/unicast-sender.c | 72 ++++++++ .../fragmentation-should-receive-all.js | 23 +++ .../fragmentation-should-receive-none.js | 22 +++ 22 files changed, 2258 insertions(+) create mode 100644 regression-tests/11-ipv6/04-exp5438-udp-fragmentation-contikimac.csc create mode 100644 regression-tests/11-ipv6/05-exp5438-udp-fragmentation-nullrdc.csc create mode 100644 regression-tests/11-ipv6/06-exp5438-udp-fragmentation-contikimac-large-sender.csc create mode 100644 regression-tests/11-ipv6/07-exp5438-udp-fragmentation-nullrdc-large-sender.csc create mode 100644 regression-tests/11-ipv6/08-exp5438-udp-fragmentation-contikimac-too-large-sender.csc create mode 100644 regression-tests/11-ipv6/09-exp5438-udp-fragmentation-nullrdc-too-large-sender.csc create mode 100644 regression-tests/11-ipv6/10-exp5438-unicast-fragmentation-contikimac.csc create mode 100644 regression-tests/11-ipv6/11-exp5438-unicast-fragmentation-nullrdc.csc create mode 100644 regression-tests/11-ipv6/12-exp5438-unicast-fragmentation-contikimac-large-sender.csc create mode 100644 regression-tests/11-ipv6/13-exp5438-unicast-fragmentation-nullrdc-large-sender.csc create mode 100644 regression-tests/11-ipv6/14-exp5438-unicast-fragmentation-contikimac-too-large-sender.csc create mode 100644 regression-tests/11-ipv6/15-exp5438-unicast-fragmentation-nullrdc-too-large-sender.csc rename regression-tests/11-ipv6/{04-sky-ipv6-rpl-collect.csc => 16-sky-ipv6-rpl-collect.csc} (100%) create mode 100644 regression-tests/11-ipv6/code/receiver/Makefile create mode 100644 regression-tests/11-ipv6/code/receiver/project-conf.h create mode 100644 regression-tests/11-ipv6/code/receiver/udp-receiver.c create mode 100644 regression-tests/11-ipv6/code/sender/Makefile create mode 100644 regression-tests/11-ipv6/code/sender/project-conf.h create mode 100644 regression-tests/11-ipv6/code/sender/udp-sender.c create mode 100644 regression-tests/11-ipv6/code/sender/unicast-sender.c create mode 100644 regression-tests/11-ipv6/fragmentation-should-receive-all.js create mode 100644 regression-tests/11-ipv6/fragmentation-should-receive-none.js diff --git a/regression-tests/11-ipv6/04-exp5438-udp-fragmentation-contikimac.csc b/regression-tests/11-ipv6/04-exp5438-udp-fragmentation-contikimac.csc new file mode 100644 index 000000000..4daec7100 --- /dev/null +++ b/regression-tests/11-ipv6/04-exp5438-udp-fragmentation-contikimac.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-all.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/05-exp5438-udp-fragmentation-nullrdc.csc b/regression-tests/11-ipv6/05-exp5438-udp-fragmentation-nullrdc.csc new file mode 100644 index 000000000..efe286bd4 --- /dev/null +++ b/regression-tests/11-ipv6/05-exp5438-udp-fragmentation-nullrdc.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-all.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/06-exp5438-udp-fragmentation-contikimac-large-sender.csc b/regression-tests/11-ipv6/06-exp5438-udp-fragmentation-contikimac-large-sender.csc new file mode 100644 index 000000000..05bae3591 --- /dev/null +++ b/regression-tests/11-ipv6/06-exp5438-udp-fragmentation-contikimac-large-sender.csc @@ -0,0 +1,165 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=500,BUFSIZE=600 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/07-exp5438-udp-fragmentation-nullrdc-large-sender.csc b/regression-tests/11-ipv6/07-exp5438-udp-fragmentation-nullrdc-large-sender.csc new file mode 100644 index 000000000..0209ba7b8 --- /dev/null +++ b/regression-tests/11-ipv6/07-exp5438-udp-fragmentation-nullrdc-large-sender.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=500,BUFSIZE=600 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/08-exp5438-udp-fragmentation-contikimac-too-large-sender.csc b/regression-tests/11-ipv6/08-exp5438-udp-fragmentation-contikimac-too-large-sender.csc new file mode 100644 index 000000000..d6c55de4c --- /dev/null +++ b/regression-tests/11-ipv6/08-exp5438-udp-fragmentation-contikimac-too-large-sender.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=500,BUFSIZE=200 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/09-exp5438-udp-fragmentation-nullrdc-too-large-sender.csc b/regression-tests/11-ipv6/09-exp5438-udp-fragmentation-nullrdc-too-large-sender.csc new file mode 100644 index 000000000..dfdba6d71 --- /dev/null +++ b/regression-tests/11-ipv6/09-exp5438-udp-fragmentation-nullrdc-too-large-sender.csc @@ -0,0 +1,165 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.c + make clean TARGET=exp5438 +make udp-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=500,BUFSIZE=200 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/udp-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/10-exp5438-unicast-fragmentation-contikimac.csc b/regression-tests/11-ipv6/10-exp5438-unicast-fragmentation-contikimac.csc new file mode 100644 index 000000000..f6292931a --- /dev/null +++ b/regression-tests/11-ipv6/10-exp5438-unicast-fragmentation-contikimac.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=400,BUFSIZE=500 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=400,BUFSIZE=500 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-all.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/11-exp5438-unicast-fragmentation-nullrdc.csc b/regression-tests/11-ipv6/11-exp5438-unicast-fragmentation-nullrdc.csc new file mode 100644 index 000000000..9e13b0301 --- /dev/null +++ b/regression-tests/11-ipv6/11-exp5438-unicast-fragmentation-nullrdc.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=400,BUFSIZE=500 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=400,BUFSIZE=500 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-all.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/12-exp5438-unicast-fragmentation-contikimac-large-sender.csc b/regression-tests/11-ipv6/12-exp5438-unicast-fragmentation-contikimac-large-sender.csc new file mode 100644 index 000000000..b1a0ad9ab --- /dev/null +++ b/regression-tests/11-ipv6/12-exp5438-unicast-fragmentation-contikimac-large-sender.csc @@ -0,0 +1,165 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=500,BUFSIZE=600 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/13-exp5438-unicast-fragmentation-nullrdc-large-sender.csc b/regression-tests/11-ipv6/13-exp5438-unicast-fragmentation-nullrdc-large-sender.csc new file mode 100644 index 000000000..41d3c65cd --- /dev/null +++ b/regression-tests/11-ipv6/13-exp5438-unicast-fragmentation-nullrdc-large-sender.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=500,BUFSIZE=600 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/14-exp5438-unicast-fragmentation-contikimac-too-large-sender.csc b/regression-tests/11-ipv6/14-exp5438-unicast-fragmentation-contikimac-too-large-sender.csc new file mode 100644 index 000000000..2c1acd318 --- /dev/null +++ b/regression-tests/11-ipv6/14-exp5438-unicast-fragmentation-contikimac-too-large-sender.csc @@ -0,0 +1,166 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver,SIZE=500,BUFSIZE=200 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=contikimac_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js + true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/15-exp5438-unicast-fragmentation-nullrdc-too-large-sender.csc b/regression-tests/11-ipv6/15-exp5438-unicast-fragmentation-nullrdc-too-large-sender.csc new file mode 100644 index 000000000..a64255550 --- /dev/null +++ b/regression-tests/11-ipv6/15-exp5438-unicast-fragmentation-nullrdc-too-large-sender.csc @@ -0,0 +1,165 @@ + + + [APPS_DIR]/mrm + [APPS_DIR]/mspsim + [APPS_DIR]/avrora + [APPS_DIR]/serial_socket + [APPS_DIR]/collect-view + [APPS_DIR]/powertracker + + My simulation + 123456 + 1000000 + + se.sics.cooja.radiomediums.UDGM + 50.0 + 100.0 + 1.0 + 1.0 + + + 40000 + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#1 + Sender + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.c + make clean TARGET=exp5438 +make unicast-sender.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver,SIZE=500,BUFSIZE=200 TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/sender/unicast-sender.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + se.sics.cooja.mspmote.Exp5438MoteType + exp5438#2 + Receiver + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.c + make clean TARGET=exp5438 +make udp-receiver.exp5438 DEFINES=NETSTACK_CONF_RDC=nullrdc_driver TARGET=exp5438 + [CONTIKI_DIR]/regression-tests/11-ipv6/code/receiver/udp-receiver.exp5438 + se.sics.cooja.interfaces.Position + se.sics.cooja.interfaces.RimeAddress + se.sics.cooja.interfaces.IPAddress + se.sics.cooja.interfaces.Mote2MoteRelations + se.sics.cooja.interfaces.MoteAttributes + se.sics.cooja.mspmote.interfaces.MspClock + se.sics.cooja.mspmote.interfaces.MspMoteID + se.sics.cooja.mspmote.interfaces.Msp802154Radio + se.sics.cooja.mspmote.interfaces.UsciA1Serial + se.sics.cooja.mspmote.interfaces.Exp5438LED + se.sics.cooja.mspmote.interfaces.MspDebugOutput + + + + + se.sics.cooja.interfaces.Position + 40.305234290431166 + 41.884881003965305 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 1 + + exp5438#1 + + + + + se.sics.cooja.interfaces.Position + 65.38552901873047 + 40.93246474846026 + 0.0 + + + se.sics.cooja.mspmote.interfaces.MspMoteID + 2 + + exp5438#2 + + + + se.sics.cooja.plugins.SimControl + 280 + 0 + 160 + 400 + 0 + + + se.sics.cooja.plugins.Visualizer + + se.sics.cooja.plugins.skins.IDVisualizerSkin + se.sics.cooja.plugins.skins.UDGMVisualizerSkin + 6.299766478490424 0.0 0.0 6.299766478490424 -160.913563890561 -119.86496930434095 + + 400 + 2 + 400 + 1 + 1 + + + se.sics.cooja.plugins.LogListener + + + + + 1200 + 5 + 240 + 400 + 160 + + + se.sics.cooja.plugins.TimeLine + + 0 + 1 + + + + 500.0 + + 1600 + 4 + 166 + 0 + 539 + + + se.sics.cooja.plugins.Notes + + Enter notes here + true + + 920 + 3 + 160 + 680 + 0 + + + se.sics.cooja.plugins.ScriptRunner + + [CONFIG_DIR]/fragmentation-should-receive-none.js true + + 618 + 1 + 399 + 645 + 128 + + + diff --git a/regression-tests/11-ipv6/04-sky-ipv6-rpl-collect.csc b/regression-tests/11-ipv6/16-sky-ipv6-rpl-collect.csc similarity index 100% rename from regression-tests/11-ipv6/04-sky-ipv6-rpl-collect.csc rename to regression-tests/11-ipv6/16-sky-ipv6-rpl-collect.csc diff --git a/regression-tests/11-ipv6/code/receiver/Makefile b/regression-tests/11-ipv6/code/receiver/Makefile new file mode 100644 index 000000000..aafcd9278 --- /dev/null +++ b/regression-tests/11-ipv6/code/receiver/Makefile @@ -0,0 +1,7 @@ +CONTIKI=../../../.. + +WITH_UIP6=1 +UIP_CONF_IPV6=1 +CFLAGS+= -DUIP_CONF_IPV6_RPL -DPROJECT_CONF_H=\"project-conf.h\" + +include $(CONTIKI)/Makefile.include diff --git a/regression-tests/11-ipv6/code/receiver/project-conf.h b/regression-tests/11-ipv6/code/receiver/project-conf.h new file mode 100644 index 000000000..877ed0ac4 --- /dev/null +++ b/regression-tests/11-ipv6/code/receiver/project-conf.h @@ -0,0 +1,6 @@ + + +#ifdef BUFSIZE +#undef UIP_CONF_BUFFER_SIZE +#define UIP_CONF_BUFFER_SIZE BUFSIZE +#endif /* BUFSIZE */ diff --git a/regression-tests/11-ipv6/code/receiver/udp-receiver.c b/regression-tests/11-ipv6/code/receiver/udp-receiver.c new file mode 100644 index 000000000..564c2672e --- /dev/null +++ b/regression-tests/11-ipv6/code/receiver/udp-receiver.c @@ -0,0 +1,66 @@ +#include "contiki.h" +#include "contiki-lib.h" +#include "contiki-net.h" + +#include + +#define UDP_PORT 61618 + +#define SEND_INTERVAL (4 * CLOCK_SECOND) + +static struct simple_udp_connection broadcast_connection; + +/*---------------------------------------------------------------------------*/ +PROCESS(udp_process, "UDP broadcast process"); +AUTOSTART_PROCESSES(&udp_process); +/*---------------------------------------------------------------------------*/ +static void +receiver(struct simple_udp_connection *c, + const uip_ipaddr_t *sender_addr, + uint16_t sender_port, + const uip_ipaddr_t *receiver_addr, + uint16_t receiver_port, + const uint8_t *data, + uint16_t datalen) +{ + static int msg; + + msg++; + printf("Data %d received length %d\n", + msg, datalen); +} +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(udp_process, ev, data) +{ + static struct etimer periodic_timer; + static struct etimer send_timer; + uip_ipaddr_t addr; + static int alive; + + PROCESS_BEGIN(); + + uip_ip6addr(&addr, 0xaaaa, 0, 0, 0, 0, 0, 0, 2); + uip_ds6_addr_add(&addr, 0, ADDR_AUTOCONF); + + simple_udp_register(&broadcast_connection, UDP_PORT, + NULL, UDP_PORT, + receiver); + + etimer_set(&periodic_timer, 20 * CLOCK_SECOND); + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_set(&periodic_timer, SEND_INTERVAL); + + while(1) { + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_reset(&periodic_timer); + alive++; + printf("Alive %d\n", alive); + + /*printf("Sending broadcast\n"); + uip_create_linklocal_allnodes_mcast(&addr); + simple_udp_sendto(&broadcast_connection, "Test", 4, &addr);*/ + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/regression-tests/11-ipv6/code/sender/Makefile b/regression-tests/11-ipv6/code/sender/Makefile new file mode 100644 index 000000000..aafcd9278 --- /dev/null +++ b/regression-tests/11-ipv6/code/sender/Makefile @@ -0,0 +1,7 @@ +CONTIKI=../../../.. + +WITH_UIP6=1 +UIP_CONF_IPV6=1 +CFLAGS+= -DUIP_CONF_IPV6_RPL -DPROJECT_CONF_H=\"project-conf.h\" + +include $(CONTIKI)/Makefile.include diff --git a/regression-tests/11-ipv6/code/sender/project-conf.h b/regression-tests/11-ipv6/code/sender/project-conf.h new file mode 100644 index 000000000..877ed0ac4 --- /dev/null +++ b/regression-tests/11-ipv6/code/sender/project-conf.h @@ -0,0 +1,6 @@ + + +#ifdef BUFSIZE +#undef UIP_CONF_BUFFER_SIZE +#define UIP_CONF_BUFFER_SIZE BUFSIZE +#endif /* BUFSIZE */ diff --git a/regression-tests/11-ipv6/code/sender/udp-sender.c b/regression-tests/11-ipv6/code/sender/udp-sender.c new file mode 100644 index 000000000..b2d4dde6a --- /dev/null +++ b/regression-tests/11-ipv6/code/sender/udp-sender.c @@ -0,0 +1,61 @@ +#include "contiki.h" +#include "contiki-lib.h" +#include "contiki-net.h" + +#include + +#define UDP_PORT 61618 + +#define SEND_INTERVAL (4 * CLOCK_SECOND) + +static struct simple_udp_connection broadcast_connection; + +#ifndef SIZE +#define SIZE 100 +#endif + +/*---------------------------------------------------------------------------*/ +PROCESS(udp_process, "UDP broadcast process"); +AUTOSTART_PROCESSES(&udp_process); +/*---------------------------------------------------------------------------*/ +static void +receiver(struct simple_udp_connection *c, + const uip_ipaddr_t *sender_addr, + uint16_t sender_port, + const uip_ipaddr_t *receiver_addr, + uint16_t receiver_port, + const uint8_t *data, + uint16_t datalen) +{ + printf("Data received on port %d from port %d with length %d\n", + receiver_port, sender_port, datalen); +} +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(udp_process, ev, data) +{ + static struct etimer periodic_timer; + static struct etimer send_timer; + uip_ipaddr_t addr; + + PROCESS_BEGIN(); + + simple_udp_register(&broadcast_connection, UDP_PORT, + NULL, UDP_PORT, + receiver); + + etimer_set(&periodic_timer, 20 * CLOCK_SECOND); + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_set(&periodic_timer, SEND_INTERVAL); + while(1) { + uint8_t buf[SIZE]; + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_reset(&periodic_timer); + + printf("Sending broadcast\n"); + uip_create_linklocal_allnodes_mcast(&addr); + simple_udp_sendto(&broadcast_connection, buf, sizeof(buf), &addr); + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/regression-tests/11-ipv6/code/sender/unicast-sender.c b/regression-tests/11-ipv6/code/sender/unicast-sender.c new file mode 100644 index 000000000..071e3ac37 --- /dev/null +++ b/regression-tests/11-ipv6/code/sender/unicast-sender.c @@ -0,0 +1,72 @@ +#include "contiki.h" +#include "contiki-lib.h" +#include "contiki-net.h" +#include "net/rpl/rpl.h" + +#include + +#define UDP_PORT 61618 + +#define SEND_INTERVAL (4 * CLOCK_SECOND) + +static struct simple_udp_connection broadcast_connection; + +#ifndef SIZE +#define SIZE 100 +#endif + +/*---------------------------------------------------------------------------*/ +PROCESS(udp_process, "UDP broadcast process"); +AUTOSTART_PROCESSES(&udp_process); +/*---------------------------------------------------------------------------*/ +static void +receiver(struct simple_udp_connection *c, + const uip_ipaddr_t *sender_addr, + uint16_t sender_port, + const uip_ipaddr_t *receiver_addr, + uint16_t receiver_port, + const uint8_t *data, + uint16_t datalen) +{ + printf("Data received on port %d from port %d with length %d\n", + receiver_port, sender_port, datalen); +} +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(udp_process, ev, data) +{ + static struct etimer periodic_timer; + static struct etimer send_timer; + uip_ipaddr_t addr; + + PROCESS_BEGIN(); + + uip_ip6addr(&addr, 0xaaaa, 0, 0, 0, 0, 0, 0, 3); + uip_ds6_addr_add(&addr, 0, ADDR_AUTOCONF); + + rpl_set_root(RPL_DEFAULT_INSTANCE, &addr); + /* dag = rpl_get_any_dag(); + uip_ip6addr(&prefix, 0xaaaa, 0, 0, 0, 0, 0, 0, 0); + rpl_set_prefix(dag, &prefix, 64);*/ + + + simple_udp_register(&broadcast_connection, UDP_PORT, + NULL, UDP_PORT, + receiver); + + etimer_set(&periodic_timer, 20 * CLOCK_SECOND); + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_set(&periodic_timer, SEND_INTERVAL); + + while(1) { + uint8_t buf[SIZE]; + PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); + etimer_reset(&periodic_timer); + + printf("Sending unicast\n"); + uip_ip6addr(&addr, 0xaaaa, 0, 0, 0, 0, 0, 0, 2); + simple_udp_sendto(&broadcast_connection, buf, sizeof(buf), &addr); + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/regression-tests/11-ipv6/fragmentation-should-receive-all.js b/regression-tests/11-ipv6/fragmentation-should-receive-all.js new file mode 100644 index 000000000..b6ad2dbd8 --- /dev/null +++ b/regression-tests/11-ipv6/fragmentation-should-receive-all.js @@ -0,0 +1,23 @@ +TIMEOUT(200000, log.log("last message: " + msg + "\n")); + +data = 0; +alive = 0; +while(true) { + YIELD(); + if(msg.startsWith('Data')) { + data++; + log.log("Heard " + data + " data messages\n"); + } + if(msg.startsWith('Alive')) { + alive++; + log.log("Heard " + alive + " alive messages\n"); + } + if(data == 10 && alive == 10) { + if(msg.startsWith('Data 10') || + msg.startsWith('Alive 10')) { + log.testOK(); + } else { + log.testError(); + } + } +} diff --git a/regression-tests/11-ipv6/fragmentation-should-receive-none.js b/regression-tests/11-ipv6/fragmentation-should-receive-none.js new file mode 100644 index 000000000..6a04bbf4f --- /dev/null +++ b/regression-tests/11-ipv6/fragmentation-should-receive-none.js @@ -0,0 +1,22 @@ +TIMEOUT(200000, log.log("last message: " + msg + "\n")); + +data = 0; +alive = 0; +while(true) { + YIELD(); + if(msg.startsWith('Data')) { + data++; + log.log("Heard " + data + " data messages\n"); + } + if(msg.startsWith('Alive')) { + alive++; + log.log("Heard " + alive + " alive messages\n"); + } + if(data == 0 && alive == 10) { + if(msg.startsWith('Alive 10')) { + log.testOK(); + } else { + log.testError(); + } + } +}