summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-01 17:35:26 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-01 17:35:46 -0700
commitb4744101f36021bf2dde713682abbd0cc6935168 (patch)
treebaacd3b9b8867513e3611b8b0ada122e0bdbe741 /include
parent43b7dfd1b6cfd1b603e96270dc6a0b1758f81a13 (diff)
Hide internal __ifreq function [BZ #18822]
Hide internal __ifreq function to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/ifreq.h: New file. * sysdeps/generic/ifreq.h (__if_nextreq): Removed. (__ifreq): Likewise. * sysdeps/mach/hurd/ifreq.h (__if_nextreq): Removed. (__ifreq): Likewise.
Diffstat (limited to 'include')
-rw-r--r--include/ifreq.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/ifreq.h b/include/ifreq.h
new file mode 100644
index 0000000000..94e984c73c
--- /dev/null
+++ b/include/ifreq.h
@@ -0,0 +1,14 @@
+#include_next <ifreq.h>
+
+static inline struct ifreq *
+__if_nextreq (struct ifreq *ifr)
+{
+#ifdef _HAVE_SA_LEN
+ if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr)
+ return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len);
+#endif
+ return ifr + 1;
+}
+
+extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
+ attribute_hidden;