diff --git a/tests/net/socket/af_packet/src/main.c b/tests/net/socket/af_packet/src/main.c index df0cb8de533..febcc6cd248 100644 --- a/tests/net/socket/af_packet/src/main.c +++ b/tests/net/socket/af_packet/src/main.c @@ -337,8 +337,13 @@ ZTEST(socket_packet, test_packet_sockets_dgram) -errno); k_msleep(10); /* Let the packet enter the system */ - memset(&src, 0, sizeof(src)); + ret = zsock_recvfrom(sock2, data_to_receive, sizeof(data_to_receive), 0, + (struct sockaddr *)&src, &addrlen); + zassert_equal(ret, -1, "Received something (%d)", ret); + zassert_equal(errno, EAGAIN, "Wrong errno (%d)", errno); + + memset(&src, 0, sizeof(src)); errno = 0; iter = 0; do { @@ -352,6 +357,21 @@ ZTEST(socket_packet, test_packet_sockets_dgram) "Cannot receive all data (%d vs %zd) (%d)", ret, sizeof(data_to_send), -errno); + zassert_equal(addrlen, sizeof(struct sockaddr_ll), + "Invalid address length (%d)", addrlen); + + struct sockaddr_ll src_expected = { + .sll_family = AF_PACKET, + .sll_protocol = dst.sll_protocol, + .sll_ifindex = net_if_get_by_iface(ud.first), + .sll_pkttype = PACKET_OTHERHOST, + .sll_hatype = ARPHRD_ETHER, + .sll_halen = sizeof(lladdr2), + .sll_addr = {0}, + }; + memcpy(&src_expected.sll_addr, lladdr2, ARRAY_SIZE(lladdr2)); + zassert_mem_equal(&src, &src_expected, addrlen, "Invalid source address"); + zassert_mem_equal(data_to_send, data_to_receive, sizeof(data_to_send), "Data mismatch"); @@ -386,6 +406,21 @@ ZTEST(socket_packet, test_packet_sockets_dgram) zassert_equal(ret, sizeof(data_to_send), "Cannot receive all data (%d)", -errno); + zassert_equal(addrlen, sizeof(struct sockaddr_ll), + "Invalid address length (%d)", addrlen); + + src_expected = (struct sockaddr_ll){ + .sll_family = AF_PACKET, + .sll_protocol = dst.sll_protocol, + .sll_ifindex = net_if_get_by_iface(ud.second), + .sll_pkttype = PACKET_OTHERHOST, + .sll_hatype = ARPHRD_ETHER, + .sll_halen = ARRAY_SIZE(lladdr2), + .sll_addr = {0}, + }; + memcpy(&src_expected.sll_addr, lladdr2, ARRAY_SIZE(lladdr2)); + zassert_mem_equal(&src, &src_expected, addrlen, "Invalid source address"); + zassert_mem_equal(data_to_send, data_to_receive, sizeof(data_to_send), "Data mismatch");