Copy socket address regardless of interface state

Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
This commit is contained in:
Jeroen Koekkoek 2018-10-24 19:33:51 +02:00
parent 4b3c6ed643
commit 40b7b5f423
2 changed files with 5 additions and 1 deletions

View file

@ -161,7 +161,7 @@ copyaddr(
if (ifa->name == NULL) { if (ifa->name == NULL) {
err = ENOMEM; err = ENOMEM;
} else if (ifa->flags & IFF_UP) { } else {
ifa->addr = os_memdup(sa, addr->Address.iSockaddrLength); ifa->addr = os_memdup(sa, addr->Address.iSockaddrLength);
if (ifa->addr == NULL) { if (ifa->addr == NULL) {
err = ENOMEM; err = ENOMEM;

View file

@ -70,6 +70,7 @@ CUnit_Test(os_getifaddrs, ipv4)
err = os_getifaddrs(&ifa_root, afs); err = os_getifaddrs(&ifa_root, afs);
CU_ASSERT_EQUAL_FATAL(err, 0); CU_ASSERT_EQUAL_FATAL(err, 0);
for (ifa = ifa_root; ifa; ifa = ifa->next) { for (ifa = ifa_root; ifa; ifa = ifa->next) {
CU_ASSERT_PTR_NOT_EQUAL_FATAL(ifa->addr, NULL);
CU_ASSERT_EQUAL(ifa->addr->sa_family, AF_INET); CU_ASSERT_EQUAL(ifa->addr->sa_family, AF_INET);
if (ifa->addr->sa_family == AF_INET) { if (ifa->addr->sa_family == AF_INET) {
if (ifa->flags & IFF_LOOPBACK) { if (ifa->flags & IFF_LOOPBACK) {
@ -95,6 +96,7 @@ CUnit_Test(os_getifaddrs, null_filter)
err = os_getifaddrs(&ifa_root, NULL); err = os_getifaddrs(&ifa_root, NULL);
CU_ASSERT_EQUAL_FATAL(err, 0); CU_ASSERT_EQUAL_FATAL(err, 0);
for (ifa = ifa_root; ifa; ifa = ifa->next) { for (ifa = ifa_root; ifa; ifa = ifa->next) {
CU_ASSERT_PTR_NOT_EQUAL_FATAL(ifa->addr, NULL);
cnt++; cnt++;
} }
@ -128,6 +130,7 @@ CUnit_Test(os_getifaddrs, ipv6)
err = os_getifaddrs(&ifa_root, afs); err = os_getifaddrs(&ifa_root, afs);
CU_ASSERT_EQUAL_FATAL(err, 0); CU_ASSERT_EQUAL_FATAL(err, 0);
for (ifa = ifa_root; ifa; ifa = ifa->next) { for (ifa = ifa_root; ifa; ifa = ifa->next) {
CU_ASSERT_PTR_NOT_EQUAL_FATAL(ifa->addr, NULL);
CU_ASSERT_EQUAL(ifa->addr->sa_family, AF_INET6); CU_ASSERT_EQUAL(ifa->addr->sa_family, AF_INET6);
if (ifa->addr->sa_family == AF_INET6) { if (ifa->addr->sa_family == AF_INET6) {
have_ipv6 = 1; have_ipv6 = 1;
@ -163,6 +166,7 @@ CUnit_Test(os_getifaddrs, ipv4_n_ipv6)
err = os_getifaddrs(&ifa_root, afs); err = os_getifaddrs(&ifa_root, afs);
CU_ASSERT_EQUAL_FATAL(err, 0); CU_ASSERT_EQUAL_FATAL(err, 0);
for (ifa = ifa_root; ifa; ifa = ifa->next) { for (ifa = ifa_root; ifa; ifa = ifa->next) {
CU_ASSERT_PTR_NOT_EQUAL_FATAL(ifa->addr, NULL);
CU_ASSERT(ifa->addr->sa_family == AF_INET || CU_ASSERT(ifa->addr->sa_family == AF_INET ||
ifa->addr->sa_family == AF_INET6); ifa->addr->sa_family == AF_INET6);
if (ifa->addr->sa_family == AF_INET) { if (ifa->addr->sa_family == AF_INET) {