• Eric Blake's avatar
    net_if: new module · 440a1dbe
    Eric Blake authored
    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: 's avatarEric Blake <eblake@redhat.com>
    440a1dbe