summaryrefslogtreecommitdiffstats
path: root/testsuite/syscalls01
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-14 13:24:10 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 13:18:48 +0100
commit8989c110f525c8dda381dba90f502635fc29883a (patch)
tree40b17f5d7775a86a8c72ac23cca59ea48c9fbaf4 /testsuite/syscalls01
parentUse getpeername() from FreeBSD (diff)
downloadrtems-libbsd-8989c110f525c8dda381dba90f502635fc29883a.tar.bz2
Use getsockname() from FreeBSD
Diffstat (limited to 'testsuite/syscalls01')
-rw-r--r--testsuite/syscalls01/test_main.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/testsuite/syscalls01/test_main.c b/testsuite/syscalls01/test_main.c
index ce626467..939ca451 100644
--- a/testsuite/syscalls01/test_main.c
+++ b/testsuite/syscalls01/test_main.c
@@ -878,6 +878,60 @@ test_socket_getpeername(void)
}
static void
+no_mem_socket_getsockname(int fd)
+{
+ struct sockaddr_in addr;
+ socklen_t addr_len;
+ int rv;
+
+ errno = 0;
+ addr_len = sizeof(addr);
+ rv = getsockname(fd, (struct sockaddr *) &addr, &addr_len);
+ assert(rv == -1);
+ assert(errno == ENOMEM);
+}
+
+static void
+test_socket_getsockname(void)
+{
+ rtems_resource_snapshot snapshot;
+ struct sockaddr_in addr;
+ struct sockaddr_in expected_addr;
+ socklen_t addr_len;
+ int sd;
+ int rv;
+
+ puts("test socket getsockname");
+
+ rtems_resource_snapshot_take(&snapshot);
+
+ sd = socket(PF_INET, SOCK_STREAM, 0);
+ assert(sd >= 0);
+
+ do_no_mem_test(no_mem_socket_getsockname, sd);
+
+ memset(&addr, 0xff, sizeof(addr));
+ addr_len = sizeof(addr);
+ rv = getsockname(sd, (struct sockaddr *) &addr, &addr_len);
+ assert(rv == 0);
+ memset(&expected_addr, 0, sizeof(expected_addr));
+ expected_addr.sin_len = sizeof(expected_addr);
+ expected_addr.sin_family = AF_INET;
+ assert(memcmp(&addr, &expected_addr, sizeof(addr)) == 0);
+
+ rv = close(sd);
+ assert(rv == 0);
+
+ errno = 0;
+ addr_len = sizeof(addr);
+ rv = getsockname(sd, (struct sockaddr *) &addr, &addr_len);
+ assert(rv == -1);
+ assert(errno == EBADF);
+
+ assert(rtems_resource_snapshot_check(&snapshot));
+}
+
+static void
test_main(void)
{
/* Must be first test to ensure resource checks work */
@@ -892,6 +946,7 @@ test_main(void)
test_socket_accept();
test_socket_getsockopt_and_setsockopt();
test_socket_getpeername();
+ test_socket_getsockname();
puts("*** END OF " TEST_NAME " TEST ***");
exit(0);