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..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 */
@@ -1590,6 +1595,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 +1632,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 +1655,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 +1699,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);
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();
+ }
+ }
+}