Skip to content

Commit 27d4c5d

Browse files
jukkarhenrikbrixandersen
authored andcommitted
tests: net: udp: Add IPv4 unicast TTL tests
Make sure that setting IPv4 unicast TTL works as expected. Signed-off-by: Jukka Rissanen <[email protected]>
1 parent b4a8e3f commit 27d4c5d

File tree

1 file changed

+49
-1
lines changed
  • tests/net/socket/udp/src

1 file changed

+49
-1
lines changed

tests/net/socket/udp/src/main.c

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2015,7 +2015,55 @@ static void test_check_ttl(int sock_c, int sock_s, int sock_p,
20152015
zassert_equal(ret, 0, "close failed");
20162016
}
20172017

2018-
ZTEST(net_socket_udp, test_31_v4_mcast_ttl)
2018+
ZTEST(net_socket_udp, test_31_v4_ttl)
2019+
{
2020+
int ret;
2021+
int client_sock;
2022+
int server_sock;
2023+
int packet_sock;
2024+
int ttl, verify;
2025+
socklen_t optlen;
2026+
struct sockaddr_in client_addr;
2027+
struct sockaddr_in server_addr;
2028+
2029+
Z_TEST_SKIP_IFNDEF(CONFIG_NET_SOCKETS_PACKET);
2030+
2031+
prepare_sock_udp_v4(MY_IPV4_ADDR, CLIENT_PORT, &client_sock, &client_addr);
2032+
prepare_sock_udp_v4(MY_IPV4_ADDR, SERVER_PORT, &server_sock, &server_addr);
2033+
2034+
packet_sock = socket(AF_PACKET, SOCK_RAW, ETH_P_ALL);
2035+
zassert_true(packet_sock >= 0, "Cannot create packet socket (%d)", -errno);
2036+
2037+
ret = bind_socket(packet_sock, lo0);
2038+
zassert_equal(ret, 0, "packet socket bind failed");
2039+
2040+
zassert_not_null(lo0->config.ip.ipv4,
2041+
"Interface %d (%p) no IPv4 configured",
2042+
net_if_get_by_iface(lo0), lo0);
2043+
2044+
ttl = 16;
2045+
net_if_ipv4_set_ttl(lo0, ttl);
2046+
verify = net_if_ipv4_get_ttl(lo0);
2047+
zassert_equal(verify, ttl, "Different TTLs (%d vs %d)", ttl, verify);
2048+
2049+
ttl = 128;
2050+
ret = setsockopt(client_sock, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
2051+
zassert_equal(ret, 0, "Cannot set unicast TTL (%d)", -errno);
2052+
2053+
optlen = sizeof(verify);
2054+
ret = getsockopt(client_sock, IPPROTO_IP, IP_TTL, &verify, &optlen);
2055+
zassert_equal(ret, 0, "Cannot get unicast TTL (%d)", -errno);
2056+
zassert_equal(verify, ttl, "Different unicast TTL (%d vs %d)",
2057+
ttl, verify);
2058+
2059+
test_check_ttl(client_sock, server_sock, packet_sock,
2060+
(struct sockaddr *)&client_addr, sizeof(client_addr),
2061+
(struct sockaddr *)&server_addr, sizeof(server_addr),
2062+
(struct sockaddr *)&server_addr, sizeof(server_addr),
2063+
AF_INET, ttl, 0);
2064+
}
2065+
2066+
ZTEST(net_socket_udp, test_32_v4_mcast_ttl)
20192067
{
20202068
int ret;
20212069
int client_sock;

0 commit comments

Comments
 (0)