11#if LWIP_DHCP_DOES_ACD_CHECK
12#define DHCP_TEST_NUM_ARP_FRAMES 5
14#define DHCP_TEST_NUM_ARP_FRAMES 0
17#define DHCP_TEST_NUM_ARP_FRAMES 1
28 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
29 0x00, 0x0F, 0xEE, 0x30, 0xAB, 0x22,
31 0x45, 0x10, 0x01, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x36, 0xcc, 0xc3, 0xaa, 0xbd, 0xab, 0xc3, 0xaa, 0xbd, 0xc8,
32 0x00, 0x43, 0x00, 0x44, 0x01, 0x34, 0x00, 0x00,
37 0xAA, 0xAA, 0xAA, 0xAA,
40 0x00, 0x00, 0x00, 0x00,
41 0xc3, 0xaa, 0xbd, 0xc8,
42 0xc3, 0xaa, 0xbd, 0xab,
43 0x00, 0x00, 0x00, 0x00,
44 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58 0x00, 0x00, 0x00, 0x00,
60 0x63, 0x82, 0x53, 0x63,
62 0x36, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
63 0x33, 0x04, 0x00, 0x00, 0x00, 0x78,
64 0x03, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
65 0x01, 0x04, 0xff, 0xff, 0xff, 0x00,
67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
73 0x00, 0x0f, 0xEE, 0x30, 0xAB, 0x22,
75 0x45, 0x10, 0x01, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x36, 0xcc, 0xc3, 0xaa, 0xbd, 0xab, 0xc3, 0xaa, 0xbd, 0xc8,
76 0x00, 0x43, 0x00, 0x44, 0x01, 0x34, 0x00, 0x00,
80 0xAA, 0xAA, 0xAA, 0xAA,
83 0x00, 0x00, 0x00, 0x00,
84 0xc3, 0xaa, 0xbd, 0xc8,
85 0xc3, 0xaa, 0xbd, 0xab,
86 0x00, 0x00, 0x00, 0x00,
87 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 0x00, 0x00, 0x00, 0x00,
103 0x63, 0x82, 0x53, 0x63,
105 0x36, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
106 0x33, 0x04, 0x00, 0x00, 0x00, 0x78,
107 0x03, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
108 0x01, 0x04, 0xff, 0xff, 0xff, 0x00,
111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116 0x00, 0x23, 0xC1, 0xDE, 0xD0, 0x0D,
117 0x00, 0x32, 0x44, 0x20, 0x01, 0x02,
124 0x00, 0x32, 0x44, 0x20, 0x01, 0x02,
125 0xc3, 0xaa, 0xbd, 0xc8,
126 0x00, 0x23, 0xC1, 0xDE, 0xD0, 0x0D,
127 0x00, 0x00, 0x00, 0x00,
147#if LWIP_DHCP_DOES_ACD_CHECK
153 if (
tick % 600 == 0) {
167 printf(
"RX data (len %d)",
p->tot_len);
168 for (
i = 0;
i <
len;
i++) {
174 fail_unless(
p !=
NULL);
188 netif->output = etharp_output;
219 fail_if((
pos +
len) >
p->tot_len);
220 while (
pos >
p->len &&
p->next) {
225 fail_unless(
pos + len <= p->
len);
237 fail_if((startpos +
len) >
p->tot_len);
238 while (startpos >
p->len &&
p->next) {
243 fail_unless(startpos + len <= p->
len);
247 for (
i = startpos;
i <= (
p->len -
len);
i++) {
267 for (
i = 0;
i < pp->
len;
i++) {
283 const u8_t ipproto[] = { 0x08, 0x00 };
284 const u8_t bootp_start[] = { 0x01, 0x01, 0x06, 0x00};
285 const u8_t ipaddrs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
292 check_pkt(
p, 42, bootp_start,
sizeof(bootp_start));
302 u8_t dhcp_discover_opt[] = { 0x35, 0x01, 0x01 };
305 u8_t dhcp_request_opt[] = { 0x35, 0x01, 0x03 };
306 u8_t requested_ipaddr[] = { 0x32, 0x04, 0xc3, 0xaa, 0xbd, 0xc8 };
313#if DHCP_TEST_NUM_ARP_FRAMES > 0
315#if DHCP_TEST_NUM_ARP_FRAMES > 1
317#if DHCP_TEST_NUM_ARP_FRAMES > 2
319#if DHCP_TEST_NUM_ARP_FRAMES > 3
321#if DHCP_TEST_NUM_ARP_FRAMES > 4
328 const u8_t arpproto[] = { 0x08, 0x06 };
345 const u8_t ipproto[] = { 0x08, 0x00 };
346 const u8_t bootp_start[] = { 0x01, 0x01, 0x06, 0x00};
347 const u8_t ipaddrs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
348 const u8_t dhcp_nak_opt[] = { 0x35, 0x01, 0x04 };
349 const u8_t requested_ipaddr[] = { 0x32, 0x04, 0xc3, 0xaa, 0xbd, 0xc8 };
357 check_pkt(
p, 42, bootp_start,
sizeof(bootp_start));
376 const u8_t ipproto[] = { 0x08, 0x00 };
377 const u8_t bootp_start[] = { 0x01, 0x01, 0x06, 0x00};
378 const u8_t ipaddrs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
385 check_pkt(
p, 42, bootp_start,
sizeof(bootp_start));
395 u8_t dhcp_discover_opt[] = { 0x35, 0x01, 0x01 };
398 u8_t dhcp_request_opt[] = { 0x35, 0x01, 0x03 };
399 u8_t requested_ipaddr[] = { 0x32, 0x04, 0x4f, 0x8a, 0x33, 0x05 };
407#if DHCP_TEST_NUM_ARP_FRAMES > 0
409#if DHCP_TEST_NUM_ARP_FRAMES > 1
411#if DHCP_TEST_NUM_ARP_FRAMES > 2
413#if DHCP_TEST_NUM_ARP_FRAMES > 3
415#if DHCP_TEST_NUM_ARP_FRAMES > 4
422 const u8_t arpproto[] = { 0x08, 0x06 };
433 const u8_t fake_arp[6] = { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xab };
434 const u8_t ipproto[] = { 0x08, 0x00 };
435 const u8_t bootp_start[] = { 0x01, 0x01, 0x06, 0x00};
436 const u8_t ipaddrs[] = { 0x00, 0x4f, 0x8a, 0x33, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
437 const u8_t dhcp_request_opt[] = { 0x35, 0x01, 0x03 };
444 check_pkt(
p, 42, bootp_start,
sizeof(bootp_start));
485 IP4_ADDR(&
addr, 0, 0, 0, 0);
486 IP4_ADDR(&netmask, 0, 0, 0, 0);
487 IP4_ADDR(&gw, 0, 0, 0, 0);
522 for (
i = 0;
i < 200;
i++) {
531 IP4_ADDR(&
addr, 195, 170, 189, 200);
532 IP4_ADDR(&netmask, 255, 255, 255, 0);
533 IP4_ADDR(&gw, 195, 170, 189, 171);
560 IP4_ADDR(&
addr, 0, 0, 0, 0);
561 IP4_ADDR(&netmask, 0, 0, 0, 0);
562 IP4_ADDR(&gw, 0, 0, 0, 0);
623 u8_t relay_offer[] = {
624 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
625 0x00, 0x22, 0x93, 0x5a, 0xf7, 0x60,
626 0x08, 0x00, 0x45, 0x00,
627 0x01, 0x38, 0xfd, 0x53, 0x00, 0x00, 0x40, 0x11,
628 0x78, 0x46, 0x4f, 0x8a, 0x32, 0x02, 0x4f, 0x8a,
629 0x33, 0x05, 0x00, 0x43, 0x00, 0x44, 0x01, 0x24,
630 0x00, 0x00, 0x02, 0x01, 0x06, 0x00, 0x51, 0x35,
631 0xb6, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
632 0x00, 0x00, 0x4f, 0x8a, 0x33, 0x05, 0x00, 0x00,
633 0x00, 0x00, 0x0a, 0xb5, 0x04, 0x01, 0x00, 0x23,
634 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00,
635 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
636 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
637 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
638 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
639 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
640 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
643 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
644 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
645 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
646 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
647 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
648 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
649 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
650 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
651 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
652 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
653 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
654 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
655 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
656 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
657 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
658 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
659 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82,
660 0x53, 0x63, 0x01, 0x04, 0xff, 0xff, 0xfe, 0x00,
661 0x03, 0x04, 0x4f, 0x8a, 0x32, 0x01, 0x06, 0x08,
662 0x4f, 0x8a, 0x00, 0xb4, 0x55, 0x08, 0x1f, 0xd1,
663 0x1c, 0x04, 0x4f, 0x8a, 0x33, 0xff, 0x33, 0x04,
664 0x00, 0x00, 0x54, 0x49, 0x35, 0x01, 0x02, 0x36,
665 0x04, 0x0a, 0xb5, 0x04, 0x01, 0xff
668 u8_t relay_ack1[] = {
669 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x22,
670 0x93, 0x5a, 0xf7, 0x60, 0x08, 0x00, 0x45, 0x00,
671 0x01, 0x38, 0xfd, 0x55, 0x00, 0x00, 0x40, 0x11,
672 0x78, 0x44, 0x4f, 0x8a, 0x32, 0x02, 0x4f, 0x8a,
673 0x33, 0x05, 0x00, 0x43, 0x00, 0x44, 0x01, 0x24,
674 0x00, 0x00, 0x02, 0x01, 0x06, 0x00, 0x51, 0x35,
675 0xb6, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
676 0x00, 0x00, 0x4f, 0x8a, 0x33, 0x05, 0x00, 0x00,
677 0x00, 0x00, 0x0a, 0xb5, 0x04, 0x01, 0x00, 0x23,
678 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00,
679 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
681 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
682 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
683 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
684 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
685 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
686 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
687 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
689 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
690 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
691 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
692 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
693 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
694 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
695 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
696 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
697 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
698 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
699 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
700 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
701 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
702 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
703 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82,
704 0x53, 0x63, 0x01, 0x04, 0xff, 0xff, 0xfe, 0x00,
705 0x03, 0x04, 0x4f, 0x8a, 0x32, 0x01, 0x06, 0x08,
706 0x4f, 0x8a, 0x00, 0xb4, 0x55, 0x08, 0x1f, 0xd1,
707 0x1c, 0x04, 0x4f, 0x8a, 0x33, 0xff, 0x33, 0x04,
708 0x00, 0x00, 0x54, 0x49, 0x35, 0x01, 0x05, 0x36,
709 0x04, 0x0a, 0xb5, 0x04, 0x01, 0xff
712 u8_t relay_ack2[] = {
713 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
714 0x00, 0x22, 0x93, 0x5a, 0xf7, 0x60,
715 0x08, 0x00, 0x45, 0x00,
716 0x01, 0x38, 0xfa, 0x18, 0x00, 0x00, 0x40, 0x11,
717 0x7b, 0x81, 0x4f, 0x8a, 0x32, 0x02, 0x4f, 0x8a,
718 0x33, 0x05, 0x00, 0x43, 0x00, 0x44, 0x01, 0x24,
719 0x00, 0x00, 0x02, 0x01, 0x06, 0x00, 0x49, 0x8b,
720 0x6e, 0xab, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x8a,
721 0x33, 0x05, 0x4f, 0x8a, 0x33, 0x05, 0x00, 0x00,
722 0x00, 0x00, 0x0a, 0xb5, 0x04, 0x01, 0x00, 0x23,
723 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00,
724 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
725 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
726 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
727 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
729 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
730 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
731 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
732 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
733 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
734 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
738 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
739 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
742 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
743 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
744 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
745 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
746 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
747 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
748 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82,
749 0x53, 0x63, 0x01, 0x04, 0xff, 0xff, 0xfe, 0x00,
750 0x03, 0x04, 0x4f, 0x8a, 0x32, 0x01, 0x06, 0x08,
751 0x4f, 0x8a, 0x00, 0xb4, 0x55, 0x08, 0x1f, 0xd1,
752 0x1c, 0x04, 0x4f, 0x8a, 0x33, 0xff, 0x33, 0x04,
753 0x00, 0x00, 0x54, 0x60, 0x35, 0x01, 0x05, 0x36,
754 0x04, 0x0a, 0xb5, 0x04, 0x01, 0xff };
756 const u8_t arp_resp[] = {
757 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
758 0x00, 0x22, 0x93, 0x5a, 0xf7, 0x60,
766 0x12, 0x34, 0x56, 0x78, 0x9a, 0xab,
767 0x4f, 0x8a, 0x32, 0x01,
769 0x00, 0x23, 0xc1, 0x00, 0x06, 0x50,
770 0x4f, 0x8a, 0x33, 0x05,
773 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
774 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
775 0x00, 0x00, 0x00, 0x00 };
787 IP4_ADDR(&
addr, 0, 0, 0, 0);
788 IP4_ADDR(&netmask, 0, 0, 0, 0);
789 IP4_ADDR(&gw, 0, 0, 0, 0);
815 for (
i = 0;
i < 200;
i++) {
824 IP4_ADDR(&
addr, 79, 138, 51, 5);
825 IP4_ADDR(&netmask, 255, 255, 254, 0);
826 IP4_ADDR(&gw, 79, 138, 50, 1);
833 for (
i = 0;
i < 108000 - 25;
i++) {
851 for (
i = 0;
i < 100000;
i++) {
871 u8_t dhcp_nack_no_endmarker[] = {
872 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x54, 0x75,
873 0xd0, 0x26, 0xd0, 0x0d, 0x08, 0x00, 0x45, 0x00,
874 0x01, 0x15, 0x38, 0x86, 0x00, 0x00, 0xff, 0x11,
875 0xc0, 0xa8, 0xc0, 0xa8, 0x01, 0x01, 0xff, 0xff,
876 0xff, 0xff, 0x00, 0x43, 0x00, 0x44, 0x01, 0x01,
877 0x00, 0x00, 0x02, 0x01, 0x06, 0x00, 0x7a, 0xcb,
878 0xba, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
879 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
880 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
881 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00,
882 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
883 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
884 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
885 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
886 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
887 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
888 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
890 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
891 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
892 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
893 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
894 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
895 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
896 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
897 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
898 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
899 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
900 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
901 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
902 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
903 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
904 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
905 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
906 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82,
907 0x53, 0x63, 0x35, 0x01, 0x06, 0x36, 0x04, 0xc0,
908 0xa8, 0x01, 0x01, 0x31, 0xef, 0xad, 0x72, 0x31,
909 0x43, 0x4e, 0x44, 0x30, 0x32, 0x35, 0x30, 0x43,
910 0x52, 0x47, 0x44, 0x38, 0x35, 0x36, 0x3c, 0x08,
911 0x4d, 0x53, 0x46, 0x54, 0x20, 0x35, 0x2e, 0x30,
912 0x37, 0x0d, 0x01, 0x0f, 0x03, 0x06, 0x2c, 0x2e,
913 0x2f, 0x1f, 0x21, 0x79, 0xf9, 0x2b, 0xfc, 0xff,
914 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x71,
915 0xf3, 0x5b, 0xe2, 0x71, 0x2e, 0x01, 0x08, 0x03,
916 0x04, 0xc0, 0xa8, 0x01, 0x01, 0xff, 0xeb, 0x1e,
917 0x44, 0xec, 0xeb, 0x1e, 0x30, 0x37, 0x0c, 0x01,
918 0x0f, 0x03, 0x06, 0x2c, 0x2e, 0x2f, 0x1f, 0x21,
919 0x79, 0xf9, 0x2b, 0xff, 0x25, 0xc0, 0x09, 0xd6,
920 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
921 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
926 u16_t request_timeout;
932 IP4_ADDR(&
addr, 0, 0, 0, 0);
933 IP4_ADDR(&netmask, 0, 0, 0, 0);
934 IP4_ADDR(&gw, 0, 0, 0, 0);
962 memcpy(&dhcp_nack_no_endmarker[46], &
xid, 4);
964 request_timeout =
dhcp->request_timeout;
965 send_pkt(&
net_test, dhcp_nack_no_endmarker,
sizeof(dhcp_nack_no_endmarker));
971 fail_unless(tries ==
dhcp->tries);
972 fail_unless(request_timeout ==
dhcp->request_timeout);
983 u8_t dhcp_offer_invalid_overload[] = {
984 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d,
985 0x00, 0x0F, 0xEE, 0x30, 0xAB, 0x22,
987 0x45, 0x10, 0x01, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x36, 0xcc, 0xc3, 0xaa, 0xbd, 0xab, 0xc3, 0xaa, 0xbd, 0xc8,
988 0x00, 0x43, 0x00, 0x44, 0x01, 0x34, 0x00, 0x00,
993 0xAA, 0xAA, 0xAA, 0xAA,
996 0x00, 0x00, 0x00, 0x00,
997 0xc3, 0xaa, 0xbd, 0xc8,
998 0xc3, 0xaa, 0xbd, 0xab,
999 0x00, 0x00, 0x00, 0x00,
1000 0x00, 0x23, 0xc1, 0xde, 0xd0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1003 0x34, 0x01, 0x02, 0xff,
1004 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1006 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1007 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1009 0x34, 0x01, 0x01, 0xff,
1010 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1011 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1012 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1013 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1014 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1015 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1016 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1017 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1019 0x63, 0x82, 0x53, 0x63,
1021 0x36, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
1022 0x33, 0x04, 0x00, 0x00, 0x00, 0x78,
1023 0x03, 0x04, 0xc3, 0xaa, 0xbd, 0xab,
1024 0x01, 0x04, 0xff, 0xff, 0xff, 0x00,
1027 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1028 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1039 IP4_ADDR(&
addr, 0, 0, 0, 0);
1040 IP4_ADDR(&netmask, 0, 0, 0, 0);
1041 IP4_ADDR(&gw, 0, 0, 0, 0);
1051 memcpy(&dhcp_offer_invalid_overload[46], &
xid, 4);
1052 dhcp_offer_invalid_overload[311] = 3;
1053 send_pkt(&
net_test, dhcp_offer_invalid_overload,
sizeof(dhcp_offer_invalid_overload));
1056 fail_if(
memcmp(&netmask, &
net_test.netmask,
sizeof(ip4_addr_t)));
1060 dhcp_offer_invalid_overload[311] = 2;
1061 send_pkt(&
net_test, dhcp_offer_invalid_overload,
sizeof(dhcp_offer_invalid_overload));
1064 fail_if(
memcmp(&netmask, &
net_test.netmask,
sizeof(ip4_addr_t)));
1068 dhcp_offer_invalid_overload[311] = 1;
1069 send_pkt(&
net_test, dhcp_offer_invalid_overload,
sizeof(dhcp_offer_invalid_overload));
1072 fail_if(
memcmp(&netmask, &
net_test.netmask,
sizeof(ip4_addr_t)));
1076 dhcp_offer_invalid_overload[311] = 0;
1099 TESTFUNC(test_dhcp_nak_no_endmarker),
1100 TESTFUNC(test_dhcp_invalid_overload)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
void dhcp(struct packet *packet)
#define LWIP_ASSERT(message, assertion)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble q
GLenum const GLvoid * addr
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define LWIP_UNUSED_ARG(x)
#define NETIF_FLAG_ETHARP
#define NETIF_FLAG_BROADCAST
#define netif_is_up(netif)
void netif_remove(struct netif *netif)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
void netif_set_link_up(struct netif *netif)
void netif_set_up(struct netif *netif)
struct pbuf * pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
Suite * create_suite(const char *name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
void lwip_check_ensure_no_alloc(unsigned int skip)
#define memcpy(s1, s2, n)
static struct test_info tests[]
u8_t hwaddr[NETIF_MAX_HWADDR_LEN]
netif_linkoutput_fn linkoutput
static void dhcp_teardown(void)
@ TEST_LWIP_DHCP_NAK_NO_ENDMARKER
@ TEST_LWIP_DHCP_INVALID_OVERLOAD
static err_t lwip_tx_func(struct netif *netif, struct pbuf *p)
static void check_pkt(struct pbuf *p, u32_t pos, const u8_t *mem, u32_t len)
static void send_pkt(struct netif *netif, const u8_t *data, size_t len)
static const u8_t magic_cookie[]
static void dhcp_setup(void)
static void check_pkt_fuzzy(struct pbuf *p, u32_t startpos, const u8_t *mem, u32_t len)
static void setdebug(int a)
static const u8_t broadcast[6]
static const u8_t arpreply[]
static err_t testif_init(struct netif *netif)
static void tick_lwip(void)
END_TEST Suite * dhcp_suite(void)
#define DHCP_TEST_NUM_ARP_FRAMES
static struct netif net_test