2021-01-02 19:32:25 +00:00
|
|
|
/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
|
1997-05-22 02:19:00 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
1997-06-23 21:55:26 +00:00
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1997-05-22 02:19:00 +00:00
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
1997-06-23 21:55:26 +00:00
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
1997-05-22 02:19:00 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
1997-05-22 02:19:00 +00:00
|
|
|
|
|
|
|
#ifndef _NETINET_IP6_H
|
|
|
|
#define _NETINET_IP6_H 1
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
#include <inttypes.h>
|
1997-05-22 02:19:00 +00:00
|
|
|
#include <netinet/in.h>
|
1997-07-28 22:35:20 +00:00
|
|
|
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_hdr
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2001-06-16 19:50:36 +00:00
|
|
|
union
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_hdrctl
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2001-06-16 19:50:36 +00:00
|
|
|
uint32_t ip6_un1_flow; /* 4 bits version, 8 bits TC,
|
|
|
|
20 bits flow-ID */
|
1997-07-28 22:35:20 +00:00
|
|
|
uint16_t ip6_un1_plen; /* payload length */
|
|
|
|
uint8_t ip6_un1_nxt; /* next header */
|
|
|
|
uint8_t ip6_un1_hlim; /* hop limit */
|
|
|
|
} ip6_un1;
|
2001-06-16 19:50:36 +00:00
|
|
|
uint8_t ip6_un2_vfc; /* 4 bits version, top 4 bits tclass */
|
1997-07-28 22:35:20 +00:00
|
|
|
} ip6_ctlun;
|
|
|
|
struct in6_addr ip6_src; /* source address */
|
|
|
|
struct in6_addr ip6_dst; /* destination address */
|
|
|
|
};
|
|
|
|
|
|
|
|
#define ip6_vfc ip6_ctlun.ip6_un2_vfc
|
|
|
|
#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
|
|
|
|
#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
|
|
|
|
#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
|
|
|
|
#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
|
|
|
|
#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
|
|
|
|
|
2003-06-14 08:39:08 +00:00
|
|
|
/* Generic extension header. */
|
|
|
|
struct ip6_ext
|
|
|
|
{
|
|
|
|
uint8_t ip6e_nxt; /* next header. */
|
|
|
|
uint8_t ip6e_len; /* length in units of 8 octets. */
|
|
|
|
};
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
/* Hop-by-Hop options header. */
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_hbh
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2003-06-14 08:39:08 +00:00
|
|
|
uint8_t ip6h_nxt; /* next header. */
|
|
|
|
uint8_t ip6h_len; /* length in units of 8 octets. */
|
1997-07-28 22:35:20 +00:00
|
|
|
/* followed by options */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Destination options header */
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_dest
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2003-06-14 08:39:08 +00:00
|
|
|
uint8_t ip6d_nxt; /* next header */
|
|
|
|
uint8_t ip6d_len; /* length in units of 8 octets */
|
1997-07-28 22:35:20 +00:00
|
|
|
/* followed by options */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Routing header */
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_rthdr
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2003-06-14 08:39:08 +00:00
|
|
|
uint8_t ip6r_nxt; /* next header */
|
|
|
|
uint8_t ip6r_len; /* length in units of 8 octets */
|
|
|
|
uint8_t ip6r_type; /* routing type */
|
|
|
|
uint8_t ip6r_segleft; /* segments left */
|
1997-07-28 22:35:20 +00:00
|
|
|
/* followed by routing type specific data */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Type 0 Routing header */
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_rthdr0
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2003-06-14 08:39:08 +00:00
|
|
|
uint8_t ip6r0_nxt; /* next header */
|
|
|
|
uint8_t ip6r0_len; /* length in units of 8 octets */
|
|
|
|
uint8_t ip6r0_type; /* always zero */
|
|
|
|
uint8_t ip6r0_segleft; /* segments left */
|
|
|
|
uint8_t ip6r0_reserved; /* reserved field */
|
|
|
|
uint8_t ip6r0_slmap[3]; /* strict/loose bit map */
|
[BZ #2693]
* inet/Makefile (routines): Add inet6_opt and inet6_rth.
* inet/Versions (libc, GLIBC_2.5): Add inet6_opt_init,
inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next,
inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init,
inet6_rth_add, inet6_rth_reverse, inet6_rth_segments,
and inet6_rth_getaddr.
* inet/netinet/ip6.h (struct ip6_rthdr0): Make ip6r0_addr a flexible
array.
* inet/netinet/in.h (struct ip6_mtuinfo): Define.
Mark inet6_option_* interfaces as deprecated.
Declare inet6_opt_init, inet6_opt_append, inet6_opt_finish,
inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val,
inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse,
inet6_rth_segments, and inet6_rth_getaddr.
* inet/inet6_opt.c: New file.
* inet/inet6_rth.c: New file.
* inet/netinet/icmp6.h: Pretty printing.
2006-05-25 04:50:06 +00:00
|
|
|
/* followed by up to 127 struct in6_addr */
|
|
|
|
struct in6_addr ip6r0_addr[0];
|
1997-07-28 22:35:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Fragment header */
|
2001-06-16 19:50:36 +00:00
|
|
|
struct ip6_frag
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2003-06-14 08:39:08 +00:00
|
|
|
uint8_t ip6f_nxt; /* next header */
|
|
|
|
uint8_t ip6f_reserved; /* reserved field */
|
|
|
|
uint16_t ip6f_offlg; /* offset, reserved, and flag */
|
|
|
|
uint32_t ip6f_ident; /* identification */
|
1997-07-28 22:35:20 +00:00
|
|
|
};
|
|
|
|
|
Installed-header hygiene (BZ#20366): Simple self-contained fixes.
Some headers did not include all of their prerequisite headers.
* rpcsvc/nislib.h: Include rpcsvc/nis.h.
* sysdeps/unix/sysv/linux/netrose/rose.h:
Include sys/socket.h and netax25/ax25.h.
<endian.h> only defines BYTE_ORDER, BIG_ENDIAN, LITTLE_ENDIAN,
etc. under __USE_MISC; glibc's headers should use __BYTE_ORDER,
__BIG_ENDIAN, __LITTLE_ENDIAN, etc. instead.
* inet/netinet/icmp6.h, inet/netinet/ip6.h
* resolv/arpa/nameser_compat.h:
Use __BYTE_ORDER etc. instead of BYTE_ORDER etc.
sys/types.h only conditionally defines caddr_t and clockid_t.
* sysdeps/unix/sysv/linux/sys/quota.h:
Use __caddr_t instead of caddr_t.
* sysdeps/unix/sysv/linux/sys/timerfd.h:
Use __clockid_t instead of clockid_t.
Remove a #warning that was the sole actual problem with using sys/ipc.h
without _GNU_SOURCE/_XOPEN_SOURCE.
* sysvipc/sys/ipc.h: Remove unnecessary #warning.
_LIBC, __USE_XOPEN2K8, and __STDC_VERSION__ are not always defined.
It seems to me that _LIBC should not appear in installed headers, but
avoiding that for argp specifically would require more surgery than
feels appropriate for this patch set. It's possible that
"#ifdef _LIBC" would be sufficient, but I wanted to be conservative.
All three versions of bits/socket.h want to know whether __flexarr
will produce a real flexible array member -- specifically, one that
doesn't alter sizeof(the structure containing it). They were testing
for this with a complicated #if condition that did not agree with
sys/cdefs.h and that tripped -Wundef warnings under -std=c90.
I added a new macro to sys/cdefs.h, __glibc_c99_flexarr_available,
which reveals exactly what these headers want to know. I also took
the opportunity to flatten the rather messy conditional nest defining
__flexarr.
* argp/argp.h: Check whether _LIBC is defined before expanding it.
* posix/glob.h: Check whether __USE_XOPEN2K8 is defined instead
of expanding it.
* misc/sys/cdefs.h: Tidy up conditional nest defining __flexarr.
Define __glibc_c99_flexarr_available to 1 when the compiler
supports C99-compatible flexible array members, 0 otherwise.
* sysdeps/unix/sysv/linux/bits/socket.h
* sysdeps/mach/hurd/bits/socket.h
* bits/socket.h: Use __glibc_c99_flexarr_available in
definitions of struct cmsghdr and CMSG_DATA.
2016-08-22 12:06:30 +00:00
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
[BZ #2693]
* inet/Makefile (routines): Add inet6_opt and inet6_rth.
* inet/Versions (libc, GLIBC_2.5): Add inet6_opt_init,
inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next,
inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init,
inet6_rth_add, inet6_rth_reverse, inet6_rth_segments,
and inet6_rth_getaddr.
* inet/netinet/ip6.h (struct ip6_rthdr0): Make ip6r0_addr a flexible
array.
* inet/netinet/in.h (struct ip6_mtuinfo): Define.
Mark inet6_option_* interfaces as deprecated.
Declare inet6_opt_init, inet6_opt_append, inet6_opt_finish,
inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val,
inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse,
inet6_rth_segments, and inet6_rth_getaddr.
* inet/inet6_opt.c: New file.
* inet/inet6_rth.c: New file.
* inet/netinet/icmp6.h: Pretty printing.
2006-05-25 04:50:06 +00:00
|
|
|
# define IP6F_OFF_MASK 0xfff8 /* mask out offset from _offlg */
|
|
|
|
# define IP6F_RESERVED_MASK 0x0006 /* reserved bits in ip6f_offlg */
|
|
|
|
# define IP6F_MORE_FRAG 0x0001 /* more-fragments flag */
|
Installed-header hygiene (BZ#20366): Simple self-contained fixes.
Some headers did not include all of their prerequisite headers.
* rpcsvc/nislib.h: Include rpcsvc/nis.h.
* sysdeps/unix/sysv/linux/netrose/rose.h:
Include sys/socket.h and netax25/ax25.h.
<endian.h> only defines BYTE_ORDER, BIG_ENDIAN, LITTLE_ENDIAN,
etc. under __USE_MISC; glibc's headers should use __BYTE_ORDER,
__BIG_ENDIAN, __LITTLE_ENDIAN, etc. instead.
* inet/netinet/icmp6.h, inet/netinet/ip6.h
* resolv/arpa/nameser_compat.h:
Use __BYTE_ORDER etc. instead of BYTE_ORDER etc.
sys/types.h only conditionally defines caddr_t and clockid_t.
* sysdeps/unix/sysv/linux/sys/quota.h:
Use __caddr_t instead of caddr_t.
* sysdeps/unix/sysv/linux/sys/timerfd.h:
Use __clockid_t instead of clockid_t.
Remove a #warning that was the sole actual problem with using sys/ipc.h
without _GNU_SOURCE/_XOPEN_SOURCE.
* sysvipc/sys/ipc.h: Remove unnecessary #warning.
_LIBC, __USE_XOPEN2K8, and __STDC_VERSION__ are not always defined.
It seems to me that _LIBC should not appear in installed headers, but
avoiding that for argp specifically would require more surgery than
feels appropriate for this patch set. It's possible that
"#ifdef _LIBC" would be sufficient, but I wanted to be conservative.
All three versions of bits/socket.h want to know whether __flexarr
will produce a real flexible array member -- specifically, one that
doesn't alter sizeof(the structure containing it). They were testing
for this with a complicated #if condition that did not agree with
sys/cdefs.h and that tripped -Wundef warnings under -std=c90.
I added a new macro to sys/cdefs.h, __glibc_c99_flexarr_available,
which reveals exactly what these headers want to know. I also took
the opportunity to flatten the rather messy conditional nest defining
__flexarr.
* argp/argp.h: Check whether _LIBC is defined before expanding it.
* posix/glob.h: Check whether __USE_XOPEN2K8 is defined instead
of expanding it.
* misc/sys/cdefs.h: Tidy up conditional nest defining __flexarr.
Define __glibc_c99_flexarr_available to 1 when the compiler
supports C99-compatible flexible array members, 0 otherwise.
* sysdeps/unix/sysv/linux/bits/socket.h
* sysdeps/mach/hurd/bits/socket.h
* bits/socket.h: Use __glibc_c99_flexarr_available in
definitions of struct cmsghdr and CMSG_DATA.
2016-08-22 12:06:30 +00:00
|
|
|
#else /* __BYTE_ORDER == __LITTLE_ENDIAN */
|
[BZ #2693]
* inet/Makefile (routines): Add inet6_opt and inet6_rth.
* inet/Versions (libc, GLIBC_2.5): Add inet6_opt_init,
inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next,
inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init,
inet6_rth_add, inet6_rth_reverse, inet6_rth_segments,
and inet6_rth_getaddr.
* inet/netinet/ip6.h (struct ip6_rthdr0): Make ip6r0_addr a flexible
array.
* inet/netinet/in.h (struct ip6_mtuinfo): Define.
Mark inet6_option_* interfaces as deprecated.
Declare inet6_opt_init, inet6_opt_append, inet6_opt_finish,
inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val,
inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse,
inet6_rth_segments, and inet6_rth_getaddr.
* inet/inet6_opt.c: New file.
* inet/inet6_rth.c: New file.
* inet/netinet/icmp6.h: Pretty printing.
2006-05-25 04:50:06 +00:00
|
|
|
# define IP6F_OFF_MASK 0xf8ff /* mask out offset from _offlg */
|
|
|
|
# define IP6F_RESERVED_MASK 0x0600 /* reserved bits in ip6f_offlg */
|
|
|
|
# define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */
|
1997-05-22 02:19:00 +00:00
|
|
|
#endif
|
|
|
|
|
2005-11-16 07:52:07 +00:00
|
|
|
/* IPv6 options */
|
|
|
|
struct ip6_opt
|
|
|
|
{
|
|
|
|
uint8_t ip6o_type;
|
|
|
|
uint8_t ip6o_len;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* The high-order 3 bits of the option type define the behavior
|
|
|
|
* when processing an unknown option and whether or not the option
|
|
|
|
* content changes in flight.
|
|
|
|
*/
|
|
|
|
#define IP6OPT_TYPE(o) ((o) & 0xc0)
|
|
|
|
#define IP6OPT_TYPE_SKIP 0x00
|
|
|
|
#define IP6OPT_TYPE_DISCARD 0x40
|
|
|
|
#define IP6OPT_TYPE_FORCEICMP 0x80
|
|
|
|
#define IP6OPT_TYPE_ICMP 0xc0
|
|
|
|
#define IP6OPT_TYPE_MUTABLE 0x20
|
|
|
|
|
2003-06-14 08:39:08 +00:00
|
|
|
/* Special option types for padding. */
|
|
|
|
#define IP6OPT_PAD1 0
|
|
|
|
#define IP6OPT_PADN 1
|
|
|
|
|
2005-11-16 07:52:07 +00:00
|
|
|
#define IP6OPT_JUMBO 0xc2
|
|
|
|
#define IP6OPT_NSAP_ADDR 0xc3
|
|
|
|
#define IP6OPT_TUNNEL_LIMIT 0x04
|
|
|
|
#define IP6OPT_ROUTER_ALERT 0x05
|
|
|
|
|
|
|
|
/* Jumbo Payload Option */
|
|
|
|
struct ip6_opt_jumbo
|
|
|
|
{
|
|
|
|
uint8_t ip6oj_type;
|
|
|
|
uint8_t ip6oj_len;
|
|
|
|
uint8_t ip6oj_jumbo_len[4];
|
|
|
|
};
|
|
|
|
#define IP6OPT_JUMBO_LEN 6
|
|
|
|
|
|
|
|
/* NSAP Address Option */
|
|
|
|
struct ip6_opt_nsap
|
|
|
|
{
|
|
|
|
uint8_t ip6on_type;
|
|
|
|
uint8_t ip6on_len;
|
|
|
|
uint8_t ip6on_src_nsap_len;
|
|
|
|
uint8_t ip6on_dst_nsap_len;
|
|
|
|
/* followed by source NSAP */
|
|
|
|
/* followed by destination NSAP */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Tunnel Limit Option */
|
|
|
|
struct ip6_opt_tunnel
|
|
|
|
{
|
|
|
|
uint8_t ip6ot_type;
|
|
|
|
uint8_t ip6ot_len;
|
|
|
|
uint8_t ip6ot_encap_limit;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Router Alert Option */
|
|
|
|
struct ip6_opt_router
|
|
|
|
{
|
|
|
|
uint8_t ip6or_type;
|
|
|
|
uint8_t ip6or_len;
|
|
|
|
uint8_t ip6or_value[2];
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Router alert values (in network byte order) */
|
Installed-header hygiene (BZ#20366): Simple self-contained fixes.
Some headers did not include all of their prerequisite headers.
* rpcsvc/nislib.h: Include rpcsvc/nis.h.
* sysdeps/unix/sysv/linux/netrose/rose.h:
Include sys/socket.h and netax25/ax25.h.
<endian.h> only defines BYTE_ORDER, BIG_ENDIAN, LITTLE_ENDIAN,
etc. under __USE_MISC; glibc's headers should use __BYTE_ORDER,
__BIG_ENDIAN, __LITTLE_ENDIAN, etc. instead.
* inet/netinet/icmp6.h, inet/netinet/ip6.h
* resolv/arpa/nameser_compat.h:
Use __BYTE_ORDER etc. instead of BYTE_ORDER etc.
sys/types.h only conditionally defines caddr_t and clockid_t.
* sysdeps/unix/sysv/linux/sys/quota.h:
Use __caddr_t instead of caddr_t.
* sysdeps/unix/sysv/linux/sys/timerfd.h:
Use __clockid_t instead of clockid_t.
Remove a #warning that was the sole actual problem with using sys/ipc.h
without _GNU_SOURCE/_XOPEN_SOURCE.
* sysvipc/sys/ipc.h: Remove unnecessary #warning.
_LIBC, __USE_XOPEN2K8, and __STDC_VERSION__ are not always defined.
It seems to me that _LIBC should not appear in installed headers, but
avoiding that for argp specifically would require more surgery than
feels appropriate for this patch set. It's possible that
"#ifdef _LIBC" would be sufficient, but I wanted to be conservative.
All three versions of bits/socket.h want to know whether __flexarr
will produce a real flexible array member -- specifically, one that
doesn't alter sizeof(the structure containing it). They were testing
for this with a complicated #if condition that did not agree with
sys/cdefs.h and that tripped -Wundef warnings under -std=c90.
I added a new macro to sys/cdefs.h, __glibc_c99_flexarr_available,
which reveals exactly what these headers want to know. I also took
the opportunity to flatten the rather messy conditional nest defining
__flexarr.
* argp/argp.h: Check whether _LIBC is defined before expanding it.
* posix/glob.h: Check whether __USE_XOPEN2K8 is defined instead
of expanding it.
* misc/sys/cdefs.h: Tidy up conditional nest defining __flexarr.
Define __glibc_c99_flexarr_available to 1 when the compiler
supports C99-compatible flexible array members, 0 otherwise.
* sysdeps/unix/sysv/linux/bits/socket.h
* sysdeps/mach/hurd/bits/socket.h
* bits/socket.h: Use __glibc_c99_flexarr_available in
definitions of struct cmsghdr and CMSG_DATA.
2016-08-22 12:06:30 +00:00
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
2005-11-16 07:52:07 +00:00
|
|
|
# define IP6_ALERT_MLD 0x0000
|
|
|
|
# define IP6_ALERT_RSVP 0x0001
|
|
|
|
# define IP6_ALERT_AN 0x0002
|
Installed-header hygiene (BZ#20366): Simple self-contained fixes.
Some headers did not include all of their prerequisite headers.
* rpcsvc/nislib.h: Include rpcsvc/nis.h.
* sysdeps/unix/sysv/linux/netrose/rose.h:
Include sys/socket.h and netax25/ax25.h.
<endian.h> only defines BYTE_ORDER, BIG_ENDIAN, LITTLE_ENDIAN,
etc. under __USE_MISC; glibc's headers should use __BYTE_ORDER,
__BIG_ENDIAN, __LITTLE_ENDIAN, etc. instead.
* inet/netinet/icmp6.h, inet/netinet/ip6.h
* resolv/arpa/nameser_compat.h:
Use __BYTE_ORDER etc. instead of BYTE_ORDER etc.
sys/types.h only conditionally defines caddr_t and clockid_t.
* sysdeps/unix/sysv/linux/sys/quota.h:
Use __caddr_t instead of caddr_t.
* sysdeps/unix/sysv/linux/sys/timerfd.h:
Use __clockid_t instead of clockid_t.
Remove a #warning that was the sole actual problem with using sys/ipc.h
without _GNU_SOURCE/_XOPEN_SOURCE.
* sysvipc/sys/ipc.h: Remove unnecessary #warning.
_LIBC, __USE_XOPEN2K8, and __STDC_VERSION__ are not always defined.
It seems to me that _LIBC should not appear in installed headers, but
avoiding that for argp specifically would require more surgery than
feels appropriate for this patch set. It's possible that
"#ifdef _LIBC" would be sufficient, but I wanted to be conservative.
All three versions of bits/socket.h want to know whether __flexarr
will produce a real flexible array member -- specifically, one that
doesn't alter sizeof(the structure containing it). They were testing
for this with a complicated #if condition that did not agree with
sys/cdefs.h and that tripped -Wundef warnings under -std=c90.
I added a new macro to sys/cdefs.h, __glibc_c99_flexarr_available,
which reveals exactly what these headers want to know. I also took
the opportunity to flatten the rather messy conditional nest defining
__flexarr.
* argp/argp.h: Check whether _LIBC is defined before expanding it.
* posix/glob.h: Check whether __USE_XOPEN2K8 is defined instead
of expanding it.
* misc/sys/cdefs.h: Tidy up conditional nest defining __flexarr.
Define __glibc_c99_flexarr_available to 1 when the compiler
supports C99-compatible flexible array members, 0 otherwise.
* sysdeps/unix/sysv/linux/bits/socket.h
* sysdeps/mach/hurd/bits/socket.h
* bits/socket.h: Use __glibc_c99_flexarr_available in
definitions of struct cmsghdr and CMSG_DATA.
2016-08-22 12:06:30 +00:00
|
|
|
#else /* __BYTE_ORDER == __LITTLE_ENDIAN */
|
2005-11-16 07:52:07 +00:00
|
|
|
# define IP6_ALERT_MLD 0x0000
|
|
|
|
# define IP6_ALERT_RSVP 0x0100
|
|
|
|
# define IP6_ALERT_AN 0x0200
|
|
|
|
#endif
|
|
|
|
|
1997-06-21 02:59:26 +00:00
|
|
|
#endif /* netinet/ip6.h */
|