aboutsummaryrefslogtreecommitdiff
path: root/inet/netinet/ip6.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-11-16 07:52:07 +0000
committerUlrich Drepper <drepper@redhat.com>2005-11-16 07:52:07 +0000
commitc2280dc039c69a690dd006c1f145c7ba9aa2eaad (patch)
treeeeac826bf54145d68cfa7e09e026207d9f953429 /inet/netinet/ip6.h
parentbaf532c12785a7c85493d6b6b2345f509b1d6389 (diff)
downloadglibc-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.h70
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 */