Summary: | Spurious use of __USE_GNU for in6_pktinfo definition | ||
---|---|---|---|
Product: | glibc | Reporter: | Francis Dupont <Francis.Dupont> |
Component: | network | Assignee: | Ulrich Drepper <drepper.fsp> |
Status: | REOPENED --- | ||
Severity: | normal | CC: | ghudson, glibc-bugs |
Priority: | P2 | Flags: | fweimer:
security-
|
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Francis Dupont
2008-07-30 07:59:40 UTC
This definition is not in POSIX and therefore there must be a feature selector. We use __USE_GNU for all the modern extensions which have no history in old BSD and SysV code. This has nothing to do with being originated in GNU systems. Just fix your code to define _GNU_SOURCE. Every program compiled on Linux should do that. IPv6 pktinfo is specified in RFC 3542, although it is still not part of POSIX. It is implemented and part of the default namespace of netinet/in.h in Solaris, FreeBSD, the Hurd, OS X, AIX, and HP-UX. In glibc, it should be protected with __USE_MISC and be available by default. By contrast, IPv4 pktinfo originated with Linux. It is now implemented in Solaris and maybe some of the BSDs, but it is much less widely available. In glibc it is already protected with __USE_MISC and available by default. That's a good thing, but it demonstrates that glibc is much too conservative about declaring IPv6 pktinfo. I disagree that all Linux programs should define _GNU_SOURCE. It breaks strerror_r with respect to POSIX and may cause other issues I don't yet know about. It's also an extra step which should not be necessary to use extensions available on many other platforms. |