tests/socket: add testcase test_get_ip_and_port

Check if osmo_sock_get_ip_and_port() works correct.

Change-Id: I4e69d814367168c05f0da161ec9b705db36ad096
diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c
index ae77184..64e48bc 100644
--- a/tests/socket/socket_test.c
+++ b/tests/socket/socket_test.c
@@ -154,6 +154,38 @@
 	return 0;
 }
 
+static int test_get_ip_and_port()
+{
+	int fd, rc;
+	char ip[INET6_ADDRSTRLEN] = { };
+	char port[6] = { };
+
+	printf("Checking test_get_ip_and_port() for combined BIND + CONNECT on IPv4\n");
+	fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "127.0.0.1", 0, "127.0.0.1", 55,
+			     OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+
+	OSMO_ASSERT(fd >= 0);
+
+	/* get the remote */
+	rc = osmo_sock_get_ip_and_port(fd, ip, sizeof(ip), port, sizeof(port), false);
+	OSMO_ASSERT(rc == 0);
+	OSMO_ASSERT(strncmp(ip, "127.0.0.1", INET6_ADDRSTRLEN) == 0);
+	OSMO_ASSERT(strncmp(port, "55", 6) == 0);
+
+	printf("Checking test_get_ip_and_port() for combined BIND + CONNECT on IPv6\n");
+	fd = osmo_sock_init2(AF_INET6, SOCK_DGRAM, IPPROTO_UDP, "::1", 0, "::1", 55,
+			     OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd >= 0);
+
+	/* get the remote */
+	rc = osmo_sock_get_ip_and_port(fd, ip, sizeof(ip), port, sizeof(port), false);
+	OSMO_ASSERT(rc == 0);
+	OSMO_ASSERT(strncmp(ip, "::1", INET6_ADDRSTRLEN) == 0);
+	OSMO_ASSERT(strncmp(port, "55", 6) == 0);
+
+	return 0;
+}
+
 const struct log_info_cat default_categories[] = {
 };
 
@@ -171,6 +203,7 @@
 
 	test_sockinit();
 	test_sockinit2();
+	test_get_ip_and_port();
 
 	return EXIT_SUCCESS;
 }
diff --git a/tests/socket/socket_test.ok b/tests/socket/socket_test.ok
index 696e356..589036f 100644
--- a/tests/socket/socket_test.ok
+++ b/tests/socket/socket_test.ok
@@ -10,3 +10,5 @@
 Checking osmo_sock_init2(AF_UNSPEC) BIND + CONNECT on IPv4
 Checking osmo_sock_init2(AF_UNSPEC) BIND + CONNECT on IPv6
 Checking osmo_sock_init2(AF_UNSPEC) BIND on IPv4
+Checking test_get_ip_and_port() for combined BIND + CONNECT on IPv4
+Checking test_get_ip_and_port() for combined BIND + CONNECT on IPv6