diff options
author | Eric Blake <eblake@redhat.com> | 2012-09-05 14:28:47 -0600 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2012-09-05 15:51:13 -0600 |
commit | 440a1dbe523e37f206252cb034c3a62f26867e42 (patch) | |
tree | 9f066cf98a8984ad2dafac800c6ed49dd013c8be /modules/net_if | |
parent | 8a8ef57118fa76ee06d57715f997332a8d3488ec (diff) | |
download | gnulib-440a1dbe523e37f206252cb034c3a62f26867e42.tar.gz |
net_if: new module
OpenBSD's <net/if.h> is not self-contained; this should compile:
| #define _POSIX_C_SOURCE 200809L
| #include <net/if.h>
| struct if_nameindex i;
but fails with:
In file included from foo.c:2:
/usr/include/net/if.h:112: error: expected specifier-qualifier-list before 'u_int'
...
/usr/include/net/if.h:674: error: field 'dstaddr' has incomplete type
In file included from /usr/include/net/if.h:691,
from foo.c:2:
/usr/include/net/if_arp.h:79: error: field 'arp_pa' has incomplete type
/usr/include/net/if_arp.h:80: error: field 'arp_ha' has incomplete type
*** Error code 1
We already had a test program for systems with the if_* functions
(including OpenBSD); but in adding this module, I had to enhance
that test to also work on platforms like mingw where we are now
providing a new header.
* modules/net_if: New module, borrowing ideas from netinet_in.
* m4/net_if_h.m4: New file.
* lib/net_if.in.h: Likewise.
* doc/posix-headers/net_if.texi (net/if.h): Document it.
* MODULES.html.sh (lacking POSIX:2008): Likewise.
* tests/test-net_if.c: Make function checks conditional.
Reported by Jasper Lievisse Adriaanse <jasper@humppa.nl>.
Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'modules/net_if')
-rw-r--r-- | modules/net_if | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/net_if b/modules/net_if new file mode 100644 index 0000000000..9e30f01512 --- /dev/null +++ b/modules/net_if @@ -0,0 +1,49 @@ +Description: +A <net/if.h> for systems lacking it. + +Files: +lib/net_if.in.h +m4/net_if_h.m4 + +Depends-on: +include_next +sys_socket + +configure.ac: +gl_HEADER_NET_IF +AC_PROG_MKDIR_P + +Makefile.am: +BUILT_SOURCES += $(NET_IF_H) + +# We need the following in order to create <net/if.h> when the system +# doesn't have one. +if GL_GENERATE_NET_IF_H +net/if.h: net_if.in.h $(top_builddir)/config.status + $(AM_V_at)$(MKDIR_P) net + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_NET_IF_H''@|$(NEXT_NET_IF_H)|g' \ + -e 's|@''HAVE_NET_IF_H''@|$(HAVE_NET_IF_H)|g' \ + < $(srcdir)/net_if.in.h; \ + } > $@-t && \ + mv $@-t $@ +else +net/if.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += net/if.h net/if.h-t +MOSTLYCLEANDIRS += net + +Include: +<net/if.h> + +License: +LGPLv2+ + +Maintainer: +Eric Blake |