net: tests: Enable unit tests for the new IP stack
We are not just checking the test build but this time the tests are also run. Change-Id: I7b0b24c51dfc2dc58f290cca7a593be431b8077f Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
9231f41f52
commit
2eb01fe191
26 changed files with 314 additions and 157 deletions
|
@ -2,10 +2,8 @@
|
|||
tags = net-6lo
|
||||
arch_whitelist = x86
|
||||
kernel = micro
|
||||
build_only = true
|
||||
|
||||
[test_nano]
|
||||
tags = net-6lo
|
||||
arch_whitelist = x86
|
||||
kernel = nano
|
||||
build_only = true
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#include <zephyr.h>
|
||||
#include <sections.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
@ -325,7 +327,7 @@ NET_DEVICE_INIT(net_arp_test, "net_arp_test",
|
|||
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
|
||||
&net_arp_if_api, _ETH_L2_LAYER, _ETH_L2_CTX_TYPE, 127);
|
||||
|
||||
void main_fiber(void)
|
||||
static bool run_tests(void)
|
||||
{
|
||||
struct net_buf *buf, *buf2;
|
||||
struct net_buf *frag;
|
||||
|
@ -355,13 +357,13 @@ void main_fiber(void)
|
|||
buf = net_nbuf_get_reserve_tx(0);
|
||||
if (!buf) {
|
||||
printk("Out of mem TX xcast\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
|
||||
if (!frag) {
|
||||
printk("Out of mem DATA xcast\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_buf_frag_add(buf, frag);
|
||||
|
@ -378,7 +380,7 @@ void main_fiber(void)
|
|||
|
||||
if (buf2 != buf) {
|
||||
printk("ARP broadcast buffer different\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
eth_hdr = (struct net_eth_hdr *)net_nbuf_ll(buf);
|
||||
|
@ -392,7 +394,7 @@ void main_fiber(void)
|
|||
printk("ETH addr dest invalid %s, should be %s", out,
|
||||
net_sprint_ll_addr((uint8_t *)net_eth_broadcast_addr(),
|
||||
sizeof(struct net_eth_addr)));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_ipaddr_copy(&ipv4->dst, &mcast);
|
||||
|
@ -401,7 +403,7 @@ void main_fiber(void)
|
|||
|
||||
if (buf2 != buf) {
|
||||
printk("ARP multicast buffer different\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (memcmp(ð_hdr->dst.addr, &multicast_eth_addr,
|
||||
|
@ -413,7 +415,7 @@ void main_fiber(void)
|
|||
printk("ETH maddr dest invalid %s, should be %s", out,
|
||||
net_sprint_ll_addr((uint8_t *)&multicast_eth_addr,
|
||||
sizeof(struct net_eth_addr)));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_unref(buf);
|
||||
|
@ -429,13 +431,13 @@ void main_fiber(void)
|
|||
buf = net_nbuf_get_reserve_tx(0);
|
||||
if (!buf) {
|
||||
printk("Out of mem TX\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
|
||||
if (!frag) {
|
||||
printk("Out of mem DATA\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_buf_frag_add(buf, frag);
|
||||
|
@ -451,7 +453,7 @@ void main_fiber(void)
|
|||
printk("LL reserve invalid, should be %d was %d\n",
|
||||
sizeof(struct net_eth_hdr),
|
||||
net_nbuf_ll_reserve(buf));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ipv4 = (struct net_ipv4_hdr *)net_buf_add(frag,
|
||||
|
@ -471,12 +473,12 @@ void main_fiber(void)
|
|||
* still room for the buf.
|
||||
*/
|
||||
printk("ARP cache should still have free space\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!buf2) {
|
||||
printk("ARP buf is empty\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* The ARP cache should now have a link to pending net_buf
|
||||
|
@ -484,7 +486,7 @@ void main_fiber(void)
|
|||
*/
|
||||
if (!buf->frags) {
|
||||
printk("Pending buf fragment is NULL\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
pending_buf = buf;
|
||||
|
||||
|
@ -497,7 +499,7 @@ void main_fiber(void)
|
|||
net_hexdump("ETH dest correct",
|
||||
(uint8_t *)net_eth_broadcast_addr(),
|
||||
sizeof(struct net_eth_addr));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (memcmp(net_nbuf_ll(buf2) + sizeof(struct net_eth_addr),
|
||||
|
@ -510,7 +512,7 @@ void main_fiber(void)
|
|||
net_hexdump("ETH src wrong ",
|
||||
net_nbuf_ll(buf2) + sizeof(struct net_eth_addr),
|
||||
sizeof(struct net_eth_addr));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
arp_hdr = NET_ARP_BUF(buf2);
|
||||
|
@ -519,37 +521,37 @@ void main_fiber(void)
|
|||
if (eth_hdr->type != htons(NET_ETH_PTYPE_ARP)) {
|
||||
printk("ETH type 0x%x, should be 0x%x\n",
|
||||
eth_hdr->type, htons(NET_ETH_PTYPE_ARP));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arp_hdr->hwtype != htons(NET_ARP_HTYPE_ETH)) {
|
||||
printk("ARP hwtype 0x%x, should be 0x%x\n",
|
||||
arp_hdr->hwtype, htons(NET_ARP_HTYPE_ETH));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arp_hdr->protocol != htons(NET_ETH_PTYPE_IP)) {
|
||||
printk("ARP protocol 0x%x, should be 0x%x\n",
|
||||
arp_hdr->protocol, htons(NET_ETH_PTYPE_IP));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arp_hdr->hwlen != sizeof(struct net_eth_addr)) {
|
||||
printk("ARP hwlen 0x%x, should be 0x%x\n",
|
||||
arp_hdr->hwlen, sizeof(struct net_eth_addr));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arp_hdr->protolen != sizeof(struct in_addr)) {
|
||||
printk("ARP IP addr len 0x%x, should be 0x%x\n",
|
||||
arp_hdr->protolen, sizeof(struct in_addr));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arp_hdr->opcode != htons(NET_ARP_REQUEST)) {
|
||||
printk("ARP opcode 0x%x, should be 0x%x\n",
|
||||
arp_hdr->opcode, htons(NET_ARP_REQUEST));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_ipv4_addr_cmp(&arp_hdr->dst_ipaddr,
|
||||
|
@ -559,7 +561,7 @@ void main_fiber(void)
|
|||
net_sprint_ipv4_addr(&arp_hdr->dst_ipaddr));
|
||||
printk("ARP IP dest invalid %s, should be %s", out,
|
||||
net_sprint_ipv4_addr(&NET_IPV4_BUF(buf)->dst));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_ipv4_addr_cmp(&arp_hdr->src_ipaddr,
|
||||
|
@ -569,7 +571,7 @@ void main_fiber(void)
|
|||
net_sprint_ipv4_addr(&arp_hdr->src_ipaddr));
|
||||
printk("ARP IP src invalid %s, should be %s", out,
|
||||
net_sprint_ipv4_addr(&NET_IPV4_BUF(buf)->src));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We could have send the new ARP request but for this test we
|
||||
|
@ -579,7 +581,7 @@ void main_fiber(void)
|
|||
|
||||
if (buf->ref != 2) {
|
||||
printk("ARP cache should own the original buffer\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Then a case where target is not in the same subnet */
|
||||
|
@ -589,12 +591,12 @@ void main_fiber(void)
|
|||
|
||||
if (buf2 == buf) {
|
||||
printk("ARP cache should not find anything\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!buf2) {
|
||||
printk("ARP buf2 is empty\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
arp_hdr = NET_ARP_BUF(buf2);
|
||||
|
@ -605,7 +607,7 @@ void main_fiber(void)
|
|||
net_sprint_ipv4_addr(&arp_hdr->dst_ipaddr));
|
||||
printk("ARP IP dst invalid %s, should be %s\n", out,
|
||||
net_sprint_ipv4_addr(&iface->ipv4.gw));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_unref(buf2);
|
||||
|
@ -623,7 +625,7 @@ void main_fiber(void)
|
|||
buf2 = net_arp_prepare(buf);
|
||||
if (!buf2) {
|
||||
printk("ARP cache is not sending the request again\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_unref(buf2);
|
||||
|
@ -641,7 +643,7 @@ void main_fiber(void)
|
|||
buf2 = net_arp_prepare(buf);
|
||||
if (!buf2) {
|
||||
printk("ARP cache did not send a req\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Restore the original address so that following test case can
|
||||
|
@ -655,14 +657,14 @@ void main_fiber(void)
|
|||
buf = net_nbuf_get_reserve_rx(0);
|
||||
if (!buf) {
|
||||
printk("Out of mem RX reply\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
printk("%d buf %p\n", __LINE__, buf);
|
||||
|
||||
frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
|
||||
if (!frag) {
|
||||
printk("Out of mem DATA reply\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
printk("%d frag %p\n", __LINE__, frag);
|
||||
|
||||
|
@ -680,7 +682,7 @@ void main_fiber(void)
|
|||
buf2 = prepare_arp_reply(iface, buf, &hwaddr);
|
||||
if (!buf2) {
|
||||
printk("ARP reply generation failed.");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* The pending packet should now be sent */
|
||||
|
@ -697,12 +699,12 @@ void main_fiber(void)
|
|||
|
||||
if (send_status < 0) {
|
||||
printk("ARP reply was not sent\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (buf->ref != 1) {
|
||||
printk("ARP cache should no longer own the original buffer\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_unref(buf);
|
||||
|
@ -711,13 +713,13 @@ void main_fiber(void)
|
|||
buf = net_nbuf_get_reserve_rx(0);
|
||||
if (!buf) {
|
||||
printk("Out of mem RX request\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
|
||||
if (!frag) {
|
||||
printk("Out of mem DATA request\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_buf_frag_add(buf, frag);
|
||||
|
@ -736,7 +738,7 @@ void main_fiber(void)
|
|||
buf2 = prepare_arp_request(iface, buf, &hwaddr);
|
||||
if (!buf2) {
|
||||
printk("ARP request generation failed.");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
req_test = true;
|
||||
|
@ -756,12 +758,23 @@ void main_fiber(void)
|
|||
|
||||
if (send_status < 0) {
|
||||
printk("ARP req was not sent\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
printk("Network ARP checks passed\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
|
|
4
tests/net/arp/testcase.ini
Normal file
4
tests/net/arp/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-arp
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
|
@ -1,6 +1,4 @@
|
|||
[test]
|
||||
tags = net-context
|
||||
build_only = true
|
||||
arch_whitelist = x86
|
||||
# Doesn't work for ia32_pci
|
||||
filter = CONFIG_SOC : "ia32"
|
||||
platform_whitelist = qemu_x86
|
||||
|
|
|
@ -2,10 +2,8 @@
|
|||
tags = net-6lo
|
||||
arch_whitelist = x86
|
||||
kernel = micro
|
||||
build_only = true
|
||||
|
||||
[test_nano]
|
||||
tags = net-6lo
|
||||
arch_whitelist = x86
|
||||
kernel = nano
|
||||
build_only = true
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
obj-y = main.o
|
||||
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <misc/printk.h>
|
||||
#include <sections.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#include <net/buf.h>
|
||||
|
||||
|
@ -69,7 +72,7 @@ static struct net_icmpv6_handler test_handler2 = {
|
|||
.handler = handle_test_msg,
|
||||
};
|
||||
|
||||
void main(void)
|
||||
static bool run_tests(void)
|
||||
{
|
||||
struct net_buf *buf, *frag;
|
||||
int ret;
|
||||
|
@ -91,33 +94,59 @@ void main(void)
|
|||
ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), 0, 0);
|
||||
if (!ret) {
|
||||
printk("%d: Callback not called properly\n", __LINE__);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags),
|
||||
NET_ICMPV6_ECHO_REPLY, 0);
|
||||
if (ret < 0 || buf_status(buf) != 0) {
|
||||
printk("%d: Callback not called properly\n", __LINE__);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), 1, 0);
|
||||
if (!ret) {
|
||||
printk("%d: Callback not called properly\n", __LINE__);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags),
|
||||
NET_ICMPV6_ECHO_REQUEST, 0);
|
||||
if (ret < 0 || buf_status(buf) != 0) {
|
||||
printk("%d: Callback not called properly\n", __LINE__);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (handler_called != 2) {
|
||||
printk("%d: Callbacks not called properly\n", __LINE__);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
printk("ICMPv6 tests passed\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
#define STACKSIZE 2000
|
||||
char __noinit __stack fiberStack[STACKSIZE];
|
||||
#endif
|
||||
|
||||
void main(void)
|
||||
{
|
||||
#if defined(CONFIG_MICROKERNEL)
|
||||
main_fiber();
|
||||
#else
|
||||
task_fiber_start(&fiberStack[0], STACKSIZE,
|
||||
(nano_fiber_entry_t)main_fiber, 0, 0, 7, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
4
tests/net/icmpv6/testcase.ini
Normal file
4
tests/net/icmpv6/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-icmpv6
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
|
@ -1,5 +1,4 @@
|
|||
[test]
|
||||
tags = net
|
||||
tags = net-ieee802154
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
||||
build_only = true
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -24,6 +24,10 @@
|
|||
#include <device.h>
|
||||
#include <init.h>
|
||||
#include <misc/printk.h>
|
||||
#include <sections.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#include <net/net_core.h>
|
||||
#include <net/nbuf.h>
|
||||
#include <net/net_ip.h>
|
||||
|
@ -37,7 +41,7 @@
|
|||
net_byte_to_hex(out, value, 'A', true); \
|
||||
if (strcmp(out, expected)) { \
|
||||
printk("Test 0x%s failed.\n", expected); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -47,7 +51,7 @@
|
|||
net_byte_to_hex(out, value, 'a', true); \
|
||||
if (strcmp(out, expected)) { \
|
||||
printk("Test 0x%s failed.\n", expected); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -57,7 +61,7 @@
|
|||
if (strcmp(net_sprint_ll_addr(ll, sizeof(ll)), \
|
||||
expected)) { \
|
||||
printk("Test %s failed.\n", expected); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -67,7 +71,7 @@
|
|||
if (strcmp(net_sprint_ll_addr(ll, sizeof(ll)), \
|
||||
expected)) { \
|
||||
printk("Test %s failed.\n", expected); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -82,7 +86,7 @@
|
|||
net_sprint_ll_addr(ll2, sizeof(ll2))); \
|
||||
if (strcmp(out, expected)) { \
|
||||
printk("Test %s failed, got %s\n", expected, out); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -93,7 +97,7 @@
|
|||
char *ptr = net_sprint_ipv6_addr(&addr); \
|
||||
if (strcmp(ptr, expected)) { \
|
||||
printk("Test %s failed, got %s\n", expected, ptr); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -103,7 +107,7 @@
|
|||
char *ptr = net_sprint_ipv4_addr(&addr); \
|
||||
if (strcmp(ptr, expected)) { \
|
||||
printk("Test %s failed, got %s\n", expected, ptr); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -166,11 +170,7 @@ NET_DEVICE_INIT(net_addr_test, "net_addr_test",
|
|||
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
|
||||
&net_test_if_api, _ETH_L2_LAYER, _ETH_L2_CTX_TYPE, 127);
|
||||
|
||||
#ifdef CONFIG_MICROKERNEL
|
||||
void mainloop(void)
|
||||
#else
|
||||
void main(void)
|
||||
#endif
|
||||
static bool run_tests(void)
|
||||
{
|
||||
struct in6_addr loopback = IN6ADDR_LOOPBACK_INIT;
|
||||
struct in6_addr any = IN6ADDR_ANY_INIT;
|
||||
|
@ -236,12 +236,12 @@ void main(void)
|
|||
|
||||
if (!net_is_ipv6_addr_loopback(&loopback)) {
|
||||
printk("IPv6 loopback address check failed.\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_is_ipv6_addr_mcast(&mcast)) {
|
||||
printk("IPv6 multicast address check failed.\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr1 = net_if_ipv6_addr_add(net_if_get_default(),
|
||||
|
@ -250,63 +250,63 @@ void main(void)
|
|||
0);
|
||||
if (!ifaddr1) {
|
||||
printk("IPv6 interface address add failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr2 = net_if_ipv6_addr_lookup(&addr6, NULL);
|
||||
if (ifaddr1 != ifaddr2) {
|
||||
printk("IPv6 interface address mismatch\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (net_is_my_ipv6_addr(&loopback)) {
|
||||
printk("My IPv6 loopback address check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_is_my_ipv6_addr(&addr6)) {
|
||||
printk("My IPv6 address check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_is_ipv6_prefix((uint8_t *)&addr6_pref1,
|
||||
(uint8_t *)&addr6_pref2,
|
||||
64)) {
|
||||
printk("Same IPv6 prefix test failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1,
|
||||
(uint8_t *)&addr6_pref3,
|
||||
64)) {
|
||||
printk("Different IPv6 prefix test failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1,
|
||||
(uint8_t *)&addr6_pref2,
|
||||
128)) {
|
||||
printk("Different full IPv6 prefix test failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1,
|
||||
(uint8_t *)&addr6_pref3,
|
||||
255)) {
|
||||
printk("Too long prefix test failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifmaddr1 = net_if_ipv6_maddr_add(net_if_get_default(), &mcast);
|
||||
if (!ifmaddr1) {
|
||||
printk("IPv6 multicast address add failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifmaddr1 = net_if_ipv6_maddr_add(net_if_get_default(), &addr6);
|
||||
if (ifmaddr1) {
|
||||
printk("IPv6 multicast address could be added failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr1 = net_if_ipv4_addr_add(net_if_get_default(),
|
||||
|
@ -315,22 +315,22 @@ void main(void)
|
|||
0);
|
||||
if (!ifaddr1) {
|
||||
printk("IPv4 interface address add failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_is_my_ipv4_addr(&addr4)) {
|
||||
printk("My IPv4 address check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (net_is_my_ipv4_addr(&loopback4)) {
|
||||
printk("My IPv4 loopback address check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (memcmp(net_if_ipv6_unspecified_addr(), &any, sizeof(any))) {
|
||||
printk("My IPv6 unspecified address check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr2 = net_if_ipv6_addr_add(net_if_get_default(),
|
||||
|
@ -339,14 +339,14 @@ void main(void)
|
|||
0);
|
||||
if (!ifaddr2) {
|
||||
printk("IPv6 ll address autoconf add failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
ifaddr2->addr_state = NET_ADDR_PREFERRED;
|
||||
|
||||
tmp = net_if_ipv6_get_ll(net_if_get_default(), NET_ADDR_PREFERRED);
|
||||
if (memcmp(tmp, &addr6.s6_addr, sizeof(struct in6_addr))) {
|
||||
printk("IPv6 ll address fetch failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr2->addr_state = NET_ADDR_DEPRECATED;
|
||||
|
@ -354,7 +354,7 @@ void main(void)
|
|||
tmp = net_if_ipv6_get_ll(net_if_get_default(), NET_ADDR_PREFERRED);
|
||||
if (tmp || !memcmp(tmp, &any, sizeof(struct in6_addr))) {
|
||||
printk("IPv6 preferred ll address fetch failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr1 = net_if_ipv6_addr_add(net_if_get_default(),
|
||||
|
@ -363,7 +363,7 @@ void main(void)
|
|||
0);
|
||||
if (!ifaddr1) {
|
||||
printk("IPv6 global address autoconf add failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
ifaddr1->addr_state = NET_ADDR_PREFERRED;
|
||||
|
||||
|
@ -375,7 +375,7 @@ void main(void)
|
|||
if (!out) {
|
||||
printk("IPv6 src addr selection failed, iface %p\n",
|
||||
iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
printk("Selected IPv6 address %s, iface %p\n",
|
||||
net_sprint_ipv6_addr(out), iface);
|
||||
|
@ -384,7 +384,7 @@ void main(void)
|
|||
sizeof(struct in6_addr))) {
|
||||
printk("IPv6 wrong src address selected, iface %p\n",
|
||||
iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Now we should get :: address */
|
||||
|
@ -392,7 +392,7 @@ void main(void)
|
|||
if (!out) {
|
||||
printk("IPv6 src any addr selection failed, "
|
||||
"iface %p\n", iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
printk("Selected IPv6 address %s, iface %p\n",
|
||||
net_sprint_ipv6_addr(out), iface);
|
||||
|
@ -401,7 +401,7 @@ void main(void)
|
|||
sizeof(struct in6_addr))) {
|
||||
printk("IPv6 wrong src any address selected, "
|
||||
"iface %p\n", iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr2->addr_state = NET_ADDR_PREFERRED;
|
||||
|
@ -411,7 +411,7 @@ void main(void)
|
|||
if (!out) {
|
||||
printk("IPv6 src ll addr selection failed, iface %p\n",
|
||||
iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
printk("Selected IPv6 address %s, iface %p\n",
|
||||
net_sprint_ipv6_addr(out), iface);
|
||||
|
@ -420,7 +420,7 @@ void main(void)
|
|||
sizeof(struct in6_addr))) {
|
||||
printk("IPv6 wrong src ll address selected, "
|
||||
"iface %p\n", iface);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -431,13 +431,39 @@ void main(void)
|
|||
|
||||
if (net_ipv4_addr_mask_cmp(iface, &fail_addr)) {
|
||||
printk("IPv4 wrong match failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!net_ipv4_addr_mask_cmp(iface, &match_addr)) {
|
||||
printk("IPv4 match failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
printk("IP address checks passed\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
#define STACKSIZE 2000
|
||||
char __noinit __stack fiberStack[STACKSIZE];
|
||||
#endif
|
||||
|
||||
void main(void)
|
||||
{
|
||||
#if defined(CONFIG_MICROKERNEL)
|
||||
main_fiber();
|
||||
#else
|
||||
task_fiber_start(&fiberStack[0], STACKSIZE,
|
||||
(nano_fiber_entry_t)main_fiber, 0, 0, 7, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
4
tests/net/ip-addr/testcase.ini
Normal file
4
tests/net/ip-addr/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-ip-addr
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
|
@ -1 +1,2 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#include <misc/printk.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#include <net/nbuf.h>
|
||||
#include <net/net_ip.h>
|
||||
|
||||
|
@ -470,16 +472,23 @@ void main(void)
|
|||
#endif
|
||||
{
|
||||
if (test_ipv6_multi_frags() < 0) {
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (test_fragment_copy() < 0) {
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (test_fragment_push() < 0) {
|
||||
return;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
printk("nbuf tests passed\n");
|
||||
|
||||
TC_END_REPORT(TC_PASS);
|
||||
return;
|
||||
|
||||
fail:
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
return;
|
||||
}
|
||||
|
|
4
tests/net/nbuf/testcase.ini
Normal file
4
tests/net/nbuf/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-nbuf
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
|
@ -1,2 +1,3 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#include <net/nbuf.h>
|
||||
#include <net/net_ip.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <sections.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#include "nbr.h"
|
||||
|
||||
|
@ -65,11 +68,7 @@ static struct net_eth_addr hwaddr3 = { { 0xee, 0xe1, 0x55, 0xfe, 0x44, 0x03 } };
|
|||
static struct net_eth_addr hwaddr4 = { { 0x61, 0xf2, 0xfe, 0x4e, 0x8e, 0x04 } };
|
||||
static struct net_eth_addr hwaddr5 = { { 0x8a, 0x52, 0x01, 0x21, 0x11, 0x05 } };
|
||||
|
||||
#ifdef CONFIG_MICROKERNEL
|
||||
void mainloop(void)
|
||||
#else
|
||||
void main(void)
|
||||
#endif
|
||||
static bool run_tests(void)
|
||||
{
|
||||
struct net_eth_addr *addrs[] = {
|
||||
&hwaddr1,
|
||||
|
@ -92,7 +91,7 @@ void main(void)
|
|||
if (CONFIG_NET_IPV6_MAX_NEIGHBORS != (ARRAY_SIZE(addrs) - 2)) {
|
||||
printk("There should be exactly %d valid entries "
|
||||
"in addrs array\n", CONFIG_NET_IPV6_MAX_NEIGHBORS + 1);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* First adding a neighbor and trying to add multiple hw addresses
|
||||
|
@ -102,12 +101,12 @@ void main(void)
|
|||
if (!nbr) {
|
||||
printk("Cannot get neighbor from table %p\n",
|
||||
&net_test_neighbor.table);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nbr->ref != 1) {
|
||||
printk("Invalid ref count %d\n", nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
lladdr.len = sizeof(struct net_eth_addr);
|
||||
|
@ -124,7 +123,7 @@ void main(void)
|
|||
printk("Cannot add %s to nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else if (!ret) {
|
||||
printk("Adding %s\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -136,7 +135,7 @@ void main(void)
|
|||
nbr = net_nbr_lookup(&net_test_neighbor.table, iface1, &lladdr);
|
||||
if (nbr->idx != 0) {
|
||||
printk("Wrong index %d should be %d\n", nbr->idx, 0);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
|
@ -149,7 +148,7 @@ void main(void)
|
|||
printk("Cannot del %s from nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else if (!ret) {
|
||||
printk("Deleting %s\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -160,7 +159,7 @@ void main(void)
|
|||
net_nbr_unref(nbr);
|
||||
if (nbr->ref != 0) {
|
||||
printk("nbr still referenced, ref %d\n", nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Then adding multiple neighbors.
|
||||
|
@ -176,12 +175,12 @@ void main(void)
|
|||
}
|
||||
printk("[%d] Cannot get neighbor from table %p\n",
|
||||
i, &net_test_neighbor.table);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nbr->ref != 1) {
|
||||
printk("[%d] Invalid ref count %d\n", i, nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
nbrs[i] = nbr;
|
||||
|
||||
|
@ -194,7 +193,7 @@ void main(void)
|
|||
printk("Cannot add %s to nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else {
|
||||
printk("Adding %s\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -207,7 +206,7 @@ void main(void)
|
|||
nbr = net_nbr_lookup(&net_test_neighbor.table, iface1, &lladdr);
|
||||
if (nbr->idx != i) {
|
||||
printk("Wrong index %d should be %d\n", nbr->idx, i);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -225,7 +224,7 @@ void main(void)
|
|||
printk("Cannot del %s from nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else {
|
||||
printk("Deleting %s\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -235,7 +234,7 @@ void main(void)
|
|||
net_nbr_unref(nbr);
|
||||
if (nbr->ref != 0) {
|
||||
printk("nbr still referenced, ref %d\n", nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -254,12 +253,12 @@ void main(void)
|
|||
}
|
||||
printk("[%d] Cannot get neighbor from table %p\n",
|
||||
i, &net_test_neighbor.table);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nbr->ref != 1) {
|
||||
printk("[%d] Invalid ref count %d\n", i, nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
nbrs[i] = nbr;
|
||||
|
||||
|
@ -276,7 +275,7 @@ void main(void)
|
|||
printk("Cannot add %s to nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else {
|
||||
printk("Adding %s iface %p\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -297,7 +296,7 @@ void main(void)
|
|||
}
|
||||
if (nbr->idx != i) {
|
||||
printk("Wrong index %d should be %d\n", nbr->idx, i);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
lladdr_ptr = net_nbr_get_lladdr(i);
|
||||
|
@ -306,7 +305,7 @@ void main(void)
|
|||
printk("Wrong lladdr %s in index %d\n",
|
||||
net_sprint_ll_addr(lladdr_ptr->addr,
|
||||
lladdr_ptr->len));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -328,7 +327,7 @@ void main(void)
|
|||
printk("Cannot del %s from nbr cache (%d)\n",
|
||||
net_sprint_ll_addr(lladdr.addr, lladdr.len),
|
||||
ret);
|
||||
return;
|
||||
return false;
|
||||
} else {
|
||||
printk("Deleting %s iface %p\n",
|
||||
net_sprint_ll_addr(eth_addr->addr,
|
||||
|
@ -339,21 +338,21 @@ void main(void)
|
|||
net_nbr_unref(nbr);
|
||||
if (nbr->ref != 0) {
|
||||
printk("nbr still referenced, ref %d\n", nbr->ref);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (add_count != remove_count) {
|
||||
printk("Remove count %d does not match add count %d\n",
|
||||
remove_count, add_count);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbr_clear_table(&net_test_neighbor.table);
|
||||
|
||||
if (!clear_called) {
|
||||
printk("Table clear check failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* The table should be empty now */
|
||||
|
@ -362,8 +361,34 @@ void main(void)
|
|||
&lladdr);
|
||||
if (nbr) {
|
||||
printk("Some entries still found in nbr cache\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
printk("Neighbor cache checks passed\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
#define STACKSIZE 2000
|
||||
char __noinit __stack fiberStack[STACKSIZE];
|
||||
#endif
|
||||
|
||||
void main(void)
|
||||
{
|
||||
#if defined(CONFIG_MICROKERNEL)
|
||||
main_fiber();
|
||||
#else
|
||||
task_fiber_start(&fiberStack[0], STACKSIZE,
|
||||
(nano_fiber_entry_t)main_fiber, 0, 0, 7, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
4
tests/net/neighbor/testcase.ini
Normal file
4
tests/net/neighbor/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-neighbor
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
|
@ -1,6 +1,4 @@
|
|||
[test]
|
||||
tags = net-trickle
|
||||
build_only = true
|
||||
arch_whitelist = x86
|
||||
# Doesn't work for ia32_pci
|
||||
filter = CONFIG_SOC : "ia32"
|
||||
platform_whitelist = qemu_x86
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <net/net_ip.h>
|
||||
#include <net/ethernet.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#if defined(CONFIG_NETWORK_IP_STACK_DEBUG_UDP)
|
||||
#define DBG(fmt, ...) printk(fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
|
@ -359,7 +361,7 @@ static void set_port(sa_family_t family, struct sockaddr *raddr,
|
|||
}
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
static bool run_tests(void)
|
||||
{
|
||||
void *handlers[CONFIG_NET_MAX_CONN];
|
||||
struct net_if *iface = net_if_get_default();;
|
||||
|
@ -412,14 +414,14 @@ void main_fiber(void)
|
|||
if (!ifaddr) {
|
||||
printk("Cannot add %s to interface %p\n",
|
||||
net_sprint_ipv6_addr(&in6addr_my));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
ifaddr = net_if_ipv4_addr_add(iface, &in4addr_my, NET_ADDR_MANUAL, 0);
|
||||
if (!ifaddr) {
|
||||
printk("Cannot add %s to interface %p\n",
|
||||
net_sprint_ipv4_addr(&in4addr_my));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
#define REGISTER(family, raddr, laddr, rport, lport) \
|
||||
|
@ -443,7 +445,7 @@ void main_fiber(void)
|
|||
if (ret) { \
|
||||
printk("UDP register %s failed (%d)\n", \
|
||||
user_data.test, ret); \
|
||||
return; \
|
||||
return false; \
|
||||
} \
|
||||
user_data.handle = handlers[i++]; \
|
||||
&user_data; \
|
||||
|
@ -457,7 +459,7 @@ void main_fiber(void)
|
|||
if (!ret) { \
|
||||
printk("UDP register invalid match %s failed\n", \
|
||||
#raddr"-"#laddr"-"#rport"-"#lport); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define UNREGISTER(ud) \
|
||||
|
@ -465,7 +467,7 @@ void main_fiber(void)
|
|||
if (ret) { \
|
||||
printk("UDP unregister %p failed (%d)\n", ud->handle, \
|
||||
ret); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define TEST_IPV6_OK(ud, raddr, laddr, rport, lport) \
|
||||
|
@ -474,7 +476,7 @@ void main_fiber(void)
|
|||
if (!st) { \
|
||||
printk("%d: UDP test \"%s\" fail\n", __LINE__, \
|
||||
ud->test); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define TEST_IPV4_OK(ud, raddr, laddr, rport, lport) \
|
||||
|
@ -483,7 +485,7 @@ void main_fiber(void)
|
|||
if (!st) { \
|
||||
printk("%d: UDP test \"%s\" fail\n", __LINE__, \
|
||||
ud->test); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define TEST_IPV6_FAIL(ud, raddr, laddr, rport, lport) \
|
||||
|
@ -492,7 +494,7 @@ void main_fiber(void)
|
|||
if (st) { \
|
||||
printk("%d: UDP neg test \"%s\" fail\n", __LINE__, \
|
||||
ud->test); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define TEST_IPV4_FAIL(ud, raddr, laddr, rport, lport) \
|
||||
|
@ -501,7 +503,7 @@ void main_fiber(void)
|
|||
if (st) { \
|
||||
printk("%d: UDP neg test \"%s\" fail\n", __LINE__, \
|
||||
ud->test); \
|
||||
return; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
ud = REGISTER(AF_INET6, &any_addr6, &any_addr6, 1234, 4242);
|
||||
|
@ -566,7 +568,7 @@ void main_fiber(void)
|
|||
|
||||
if (fail) {
|
||||
printk("Tests failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
i--;
|
||||
|
@ -574,7 +576,7 @@ void main_fiber(void)
|
|||
ret = net_udp_unregister(handlers[i]);
|
||||
if (ret < 0 && ret != -ENOENT) {
|
||||
printk("Cannot unregister udp %d\n", i);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
i--;
|
||||
|
@ -582,10 +584,20 @@ void main_fiber(void)
|
|||
|
||||
if (!(net_udp_unregister(NULL) < 0)) {
|
||||
printk("Unregister udp failed\n");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
printk("Network UDP checks passed\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
[test]
|
||||
tags = net-udp
|
||||
build_only = true
|
||||
arch_whitelist = x86
|
||||
# Doesn't work for ia32_pci
|
||||
filter = CONFIG_SOC : "ia32"
|
||||
platform_whitelist = qemu_x86
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
obj-y = main.o
|
||||
ccflags-y += -I${ZEPHYR_BASE}/tests/include
|
||||
ccflags-y += -I${ZEPHYR_BASE}/net/yaip
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#include <net/nbuf.h>
|
||||
#include <net/net_ip.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <sections.h>
|
||||
|
||||
#include <tc_util.h>
|
||||
|
||||
#define NET_DEBUG 1
|
||||
#include "net_private.h"
|
||||
|
@ -154,11 +157,7 @@ static const unsigned char pkt5[98] = {
|
|||
0x36, 0x37 /* 67 */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MICROKERNEL
|
||||
void mainloop(void)
|
||||
#else
|
||||
void main(void)
|
||||
#endif
|
||||
static bool run_tests(void)
|
||||
{
|
||||
struct net_buf *frag, *buf;
|
||||
uint16_t chksum, orig_chksum;
|
||||
|
@ -173,7 +172,7 @@ void main(void)
|
|||
if (frag->len != sizeof(pkt1)) {
|
||||
printk("Fragment len %d invalid, should be %d\n",
|
||||
frag->len, sizeof(pkt1));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr));
|
||||
|
@ -190,7 +189,7 @@ void main(void)
|
|||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt1, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
|
@ -218,7 +217,7 @@ void main(void)
|
|||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt2, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
|
@ -249,7 +248,7 @@ void main(void)
|
|||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt3, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
|
@ -306,14 +305,14 @@ void main(void)
|
|||
"pkt3 size %d frags size %d calc total %d\n",
|
||||
sizeof(pkt3), net_buf_frags_len(buf->frags),
|
||||
total + sizeof(struct net_ipv6_hdr));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
chksum = ntohs(~net_calc_chksum(buf, IPPROTO_ICMPV6));
|
||||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt3, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
|
@ -341,7 +340,7 @@ void main(void)
|
|||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt4, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
|
@ -369,9 +368,34 @@ void main(void)
|
|||
if (chksum != orig_chksum) {
|
||||
printk("Invalid chksum 0x%x in pkt5, should be 0x%x\n",
|
||||
chksum, orig_chksum);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
net_nbuf_unref(buf);
|
||||
|
||||
printk("Network utils checks passed\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
if (run_tests()) {
|
||||
TC_END_REPORT(TC_PASS);
|
||||
} else {
|
||||
TC_END_REPORT(TC_FAIL);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NANOKERNEL)
|
||||
#define STACKSIZE 2000
|
||||
char __noinit __stack fiberStack[STACKSIZE];
|
||||
#endif
|
||||
|
||||
void main(void)
|
||||
{
|
||||
#if defined(CONFIG_MICROKERNEL)
|
||||
main_fiber();
|
||||
#else
|
||||
task_fiber_start(&fiberStack[0], STACKSIZE,
|
||||
(nano_fiber_entry_t)main_fiber, 0, 0, 7, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
4
tests/net/utils/testcase.ini
Normal file
4
tests/net/utils/testcase.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[test]
|
||||
tags = net-utils
|
||||
arch_whitelist = x86
|
||||
platform_whitelist = qemu_x86
|
Loading…
Add table
Add a link
Reference in a new issue