mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-06 10:51:58 +00:00
As the getaddrinfo() test is suppose to be self contained, then we will need to install handler for the sent DNS query. After we receive the query in process_dns() thread, we verify that the query was sent properly. We do not return DNS reply back to the caller in this case as we do not want to create DNS server just for this simple test application. This can be changed later if we get DNS server functionality in Zephyr network stack. Fixes #15193 Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
123 lines
3.2 KiB
C
123 lines
3.2 KiB
C
/*
|
|
* Copyright (c) 2018 Linaro Limited
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <ztest_assert.h>
|
|
|
|
#include <net/socket.h>
|
|
|
|
#define clear_buf(buf) memset(buf, 0, sizeof(buf))
|
|
|
|
static inline int prepare_listen_sock_udp_v4(struct sockaddr_in *addr)
|
|
{
|
|
int ret, sock;
|
|
|
|
zassert_not_null(addr, "null sockaddr");
|
|
|
|
ret = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
|
zassert_true(ret >= 0, "socket open failed");
|
|
|
|
sock = ret;
|
|
|
|
zassert_equal(addr->sin_family, AF_INET, "Invalid family");
|
|
|
|
ret = bind(sock, (struct sockaddr *)addr, sizeof(*addr));
|
|
zassert_equal(ret, 0, "bind failed (%d/%d)", ret, errno);
|
|
|
|
return sock;
|
|
}
|
|
|
|
static inline int prepare_listen_sock_udp_v6(struct sockaddr_in6 *addr)
|
|
{
|
|
int ret, sock;
|
|
|
|
zassert_not_null(addr, "null sockaddr");
|
|
|
|
ret = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
|
|
zassert_true(ret >= 0, "socket open failed");
|
|
|
|
sock = ret;
|
|
|
|
zassert_equal(addr->sin6_family, AF_INET6, "Invalid family");
|
|
|
|
ret = bind(sock, (struct sockaddr *)addr, sizeof(*addr));
|
|
zassert_equal(ret, 0, "bind failed (%d/%d)", ret, errno);
|
|
|
|
return sock;
|
|
}
|
|
|
|
static inline void prepare_sock_udp_v4(const char *addr, u16_t port,
|
|
int *sock, struct sockaddr_in *sockaddr)
|
|
{
|
|
int rv;
|
|
|
|
zassert_not_null(addr, "null addr");
|
|
zassert_not_null(sock, "null sock");
|
|
zassert_not_null(sockaddr, "null sockaddr");
|
|
|
|
*sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
|
zassert_true(*sock >= 0, "socket open failed");
|
|
|
|
sockaddr->sin_family = AF_INET;
|
|
sockaddr->sin_port = htons(port);
|
|
rv = inet_pton(AF_INET, addr, &sockaddr->sin_addr);
|
|
zassert_equal(rv, 1, "inet_pton failed");
|
|
}
|
|
|
|
static inline void prepare_sock_udp_v6(const char *addr, u16_t port,
|
|
int *sock, struct sockaddr_in6 *sockaddr)
|
|
{
|
|
int rv;
|
|
|
|
zassert_not_null(addr, "null addr");
|
|
zassert_not_null(sock, "null sock");
|
|
zassert_not_null(sockaddr, "null sockaddr");
|
|
|
|
*sock = zsock_socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
|
|
zassert_true(*sock >= 0, "socket open failed");
|
|
|
|
(void)memset(sockaddr, 0, sizeof(*sockaddr));
|
|
sockaddr->sin6_family = AF_INET6;
|
|
sockaddr->sin6_port = htons(port);
|
|
rv = zsock_inet_pton(AF_INET6, addr, &sockaddr->sin6_addr);
|
|
zassert_equal(rv, 1, "inet_pton failed");
|
|
}
|
|
|
|
static inline void prepare_sock_tcp_v4(const char *addr, u16_t port,
|
|
int *sock, struct sockaddr_in *sockaddr)
|
|
{
|
|
int rv;
|
|
|
|
zassert_not_null(addr, "null addr");
|
|
zassert_not_null(sock, "null sock");
|
|
zassert_not_null(sockaddr, "null sockaddr");
|
|
|
|
*sock = zsock_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
zassert_true(*sock >= 0, "socket open failed");
|
|
|
|
sockaddr->sin_family = AF_INET;
|
|
sockaddr->sin_port = htons(port);
|
|
rv = zsock_inet_pton(AF_INET, addr, &sockaddr->sin_addr);
|
|
zassert_equal(rv, 1, "inet_pton failed");
|
|
}
|
|
|
|
static inline void prepare_sock_tcp_v6(const char *addr, u16_t port,
|
|
int *sock, struct sockaddr_in6 *sockaddr)
|
|
{
|
|
int rv;
|
|
|
|
zassert_not_null(addr, "null addr");
|
|
zassert_not_null(sock, "null sock");
|
|
zassert_not_null(sockaddr, "null sockaddr");
|
|
|
|
*sock = zsock_socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
|
|
zassert_true(*sock >= 0, "socket open failed");
|
|
|
|
sockaddr->sin6_family = AF_INET6;
|
|
sockaddr->sin6_port = htons(port);
|
|
rv = zsock_inet_pton(AF_INET6, addr, &sockaddr->sin6_addr);
|
|
zassert_equal(rv, 1, "inet_pton failed");
|
|
}
|