net_if: new module
authorEric Blake <eblake@redhat.com>
Wed, 5 Sep 2012 20:28:47 +0000 (14:28 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 5 Sep 2012 21:51:13 +0000 (15:51 -0600)
commit440a1dbe523e37f206252cb034c3a62f26867e42
tree9f066cf98a8984ad2dafac800c6ed49dd013c8be
parent8a8ef57118fa76ee06d57715f997332a8d3488ec
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>
ChangeLog
MODULES.html.sh
doc/posix-headers/net_if.texi
lib/net_if.in.h [new file with mode: 0644]
m4/net_if_h.m4 [new file with mode: 0644]
modules/net_if [new file with mode: 0644]
tests/test-net_if.c