Add NI_NUMERICSCOPE.
POSIX also declares NI_NUMERICSCOPE, which makes getnameinfo() return a numerical scope identifier. The interesting thing is that support for this is already present in code, but #ifdef disabled. Expose this functionality by placing a definition for it in <netdb.h>. While there, remove references to NI_WITHSCOPEID, as that got removed 11 years ago.
This commit is contained in:
parent
53168ffb1b
commit
43835a137d
@ -214,9 +214,7 @@ struct addrinfo {
|
||||
#define NI_NAMEREQD 0x00000004
|
||||
#define NI_NUMERICSERV 0x00000008
|
||||
#define NI_DGRAM 0x00000010
|
||||
#if 0 /* obsolete */
|
||||
#define NI_WITHSCOPEID 0x00000020
|
||||
#endif
|
||||
#define NI_NUMERICSCOPE 0x00000020
|
||||
|
||||
/*
|
||||
* Scope delimit character
|
||||
|
@ -18,7 +18,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd September 20, 2015
|
||||
.Dd July 28, 2016
|
||||
.Dt GETNAMEINFO 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -111,7 +111,7 @@ The
|
||||
argument is formed by
|
||||
.Tn OR Ns 'ing
|
||||
the following values:
|
||||
.Bl -tag -width "NI_NUMERICHOSTXX"
|
||||
.Bl -tag -width "NI_NUMERICSCOPEXX"
|
||||
.It Dv NI_NOFQDN
|
||||
A fully qualified domain name is not required for local hosts.
|
||||
The local part of the fully qualified domain name is returned instead.
|
||||
@ -127,6 +127,8 @@ If the host name is not found and the flag is not set, the
|
||||
address is returned in numeric form.
|
||||
.It NI_NUMERICSERV
|
||||
The service name is returned as a digit string representing the port number.
|
||||
.It NI_NUMERICSCOPE
|
||||
The scope identifier is returned as a digit string.
|
||||
.It NI_DGRAM
|
||||
Specifies that the service being looked up is a datagram
|
||||
service, and causes
|
||||
|
@ -378,7 +378,6 @@ ip6_sa2str(const struct sockaddr_in6 *sa6, char *buf, size_t bufsiz, int flags)
|
||||
ifindex = (unsigned int)sa6->sin6_scope_id;
|
||||
a6 = &sa6->sin6_addr;
|
||||
|
||||
#ifdef NI_NUMERICSCOPE
|
||||
if ((flags & NI_NUMERICSCOPE) != 0) {
|
||||
n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
|
||||
if (n < 0 || n >= bufsiz)
|
||||
@ -386,7 +385,6 @@ ip6_sa2str(const struct sockaddr_in6 *sa6, char *buf, size_t bufsiz, int flags)
|
||||
else
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* if_indextoname() does not take buffer size. not a good api... */
|
||||
if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) ||
|
||||
|
Loading…
Reference in New Issue
Block a user