summaryrefslogtreecommitdiffstats
path: root/lib/libc/net/getnetnamadr.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2005-05-15 20:15:15 +0000
committerume <ume@FreeBSD.org>2005-05-15 20:15:15 +0000
commit7a6cd620d08df24bc7c27e2a13017a1f63f004b2 (patch)
tree309b5291b90b8bac584d010fde9db8ed4db9a767 /lib/libc/net/getnetnamadr.c
parentdd14237cdafb5e0124ab3277ac0ac8f9eaf03aa0 (diff)
downloadFreeBSD-src-7a6cd620d08df24bc7c27e2a13017a1f63f004b2.zip
FreeBSD-src-7a6cd620d08df24bc7c27e2a13017a1f63f004b2.tar.gz
- The ai_addrlen of a struct addrinfo used to be a size_t, per
RFC 2553. In XNS5.2, and subsequently in POSIX-2001 and RFC 3493, it was changed to a socklen_t. And, the n_net of a struct netent used to be an unsigned long integer. In XNS5, and subsequently in POSIX-2001, it was changed to an uint32_t. To accomodate for this while preserving ABI compatibility with the old interface, we need to prepend or append 32 bits of padding, depending on the (LP64) architecture's endianness. - Correct 1st argument of getnetbyaddr() to uint32_t on 32 bit arch. Stay as is on 64 bit arch for ABI backward compatibility for now. Reviewed by: das, peter MFC after: 2 weeks
Diffstat (limited to 'lib/libc/net/getnetnamadr.c')
-rw-r--r--lib/libc/net/getnetnamadr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/libc/net/getnetnamadr.c b/lib/libc/net/getnetnamadr.c
index 7b8aaa6..eb8c9ae 100644
--- a/lib/libc/net/getnetnamadr.c
+++ b/lib/libc/net/getnetnamadr.c
@@ -120,7 +120,8 @@ getnetbyname_r(const char *name, struct netent *ne, struct netent_data *ned)
}
int
-getnetbyaddr_r(u_long addr, int af, struct netent *ne, struct netent_data *ned)
+getnetbyaddr_r(uint32_t addr, int af, struct netent *ne,
+ struct netent_data *ned)
{
int rval;
@@ -164,13 +165,17 @@ getnetbyname(const char *name)
}
struct netent *
-getnetbyaddr(u_long addr, int af)
+#if __LONG_BIT == 64
+getnetbyaddr(u_long addr, int af) /* ABI compatibility */
+#else
+getnetbyaddr(uint32_t addr, int af)
+#endif
{
struct netdata *nd;
if ((nd = __netdata_init()) == NULL)
return NULL;
- if (getnetbyaddr_r(addr, af, &nd->net, &nd->data) != 0)
+ if (getnetbyaddr_r((uint32_t)addr, af, &nd->net, &nd->data) != 0)
return NULL;
return &nd->net;
}
OpenPOWER on IntegriCloud