diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-11-16 07:52:07 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-11-16 07:52:07 +0000 |
commit | c2280dc039c69a690dd006c1f145c7ba9aa2eaad (patch) | |
tree | eeac826bf54145d68cfa7e09e026207d9f953429 /inet/netinet/ip6.h | |
parent | baf532c12785a7c85493d6b6b2345f509b1d6389 (diff) | |
download | glibc-c2280dc039c69a690dd006c1f145c7ba9aa2eaad.zip glibc-c2280dc039c69a690dd006c1f145c7ba9aa2eaad.tar.gz glibc-c2280dc039c69a690dd006c1f145c7ba9aa2eaad.tar.bz2 |
[BZ 1865]
* inet/netinet/icmp6.h: More updates for RFC3542.
* inet/netinet/ip6.h: Likewise.
* sysdeps/unix/sysv/linux/bits/in.h: Adjust for current kernel sources.
Patch by David L Stevens <dlstevens@us.ibm.com>.
Diffstat (limited to 'inet/netinet/ip6.h')
-rw-r--r-- | inet/netinet/ip6.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/inet/netinet/ip6.h b/inet/netinet/ip6.h index 7045836..0ad62f8 100644 --- a/inet/netinet/ip6.h +++ b/inet/netinet/ip6.h @@ -111,8 +111,78 @@ struct ip6_frag #define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */ #endif +/* 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 + /* Special option types for padding. */ #define IP6OPT_PAD1 0 #define IP6OPT_PADN 1 +#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) */ +#if BYTE_ORDER == BIG_ENDIAN +# define IP6_ALERT_MLD 0x0000 +# define IP6_ALERT_RSVP 0x0001 +# define IP6_ALERT_AN 0x0002 +#else /* BYTE_ORDER == LITTLE_ENDING */ +# define IP6_ALERT_MLD 0x0000 +# define IP6_ALERT_RSVP 0x0100 +# define IP6_ALERT_AN 0x0200 +#endif + #endif /* netinet/ip6.h */ |