blob: 280a912de5b93cdb645c9b0b6b8b0b3e15d6985c [file] [log] [blame]
/*
* Copyright (c) 2020 Friedt Professional Engineering Services, Inc
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <fcntl.h>
#include <zephyr/logging/log.h>
LOG_MODULE_DECLARE(net_test, CONFIG_NET_SOCKETS_LOG_LEVEL);
#include <stdio.h>
#include <string.h>
#include <zephyr/net/socket.h>
#include <zephyr/sys/util.h>
#include <zephyr/posix/unistd.h>
#include <zephyr/ztest_assert.h>
#undef read
#define read(fd, buf, len) zsock_recv(fd, buf, len, 0)
#undef write
#define write(fd, buf, len) zsock_send(fd, buf, len, 0)
ZTEST_USER(net_socketpair, test_socketpair_unsupported_calls)
{
int res;
int sv[2] = {-1, -1};
struct sockaddr_un addr = {
.sun_family = AF_UNIX,
};
socklen_t len = sizeof(addr);
res = socketpair(AF_UNIX, SOCK_STREAM, 0, sv);
zassert_equal(res, 0,
"socketpair(AF_UNIX, SOCK_STREAM, 0, sv) failed");
for (size_t i = 0; i < 2; ++i) {
res = bind(sv[i], (struct sockaddr *)&addr, len);
zassert_equal(res, -1,
"bind should fail on a socketpair endpoint");
zassert_equal(errno, EISCONN,
"bind should set errno to EISCONN");
res = connect(sv[i], (struct sockaddr *)&addr, len);
zassert_equal(res, -1,
"connect should fail on a socketpair endpoint");
zassert_equal(errno, EISCONN,
"connect should set errno to EISCONN");
res = listen(sv[i], 1);
zassert_equal(res, -1,
"listen should fail on a socketpair endpoint");
zassert_equal(errno, EINVAL,
"listen should set errno to EINVAL");
res = accept(sv[i], (struct sockaddr *)&addr, &len);
zassert_equal(res, -1,
"accept should fail on a socketpair endpoint");
zassert_equal(errno, EOPNOTSUPP,
"accept should set errno to EOPNOTSUPP");
}
res = close(sv[0]);
zassert_equal(res, 0, "close failed");
res = close(sv[1]);
zassert_equal(res, 0, "close failed");
}