home *** CD-ROM | disk | FTP | other *** search
- #ifndef _NETINET_IP6_OPTS_H_
- #define _NETINET_IP6_OPTS_H_
-
- #ifndef _SYS_TYPES_H_
- #include <sys/types.h>
- #endif
-
- #ifndef _NETINET_IN_H_
- #include <netinet/in.h>
- #endif
-
- /*
- * Definition of IPv6 options and extensions for Neighbor Discovery
- */
- #define OPT6_PAD_0 0 /* Single Pad */
- #define OPT6_PAD_N 1 /* Multiple Pad */
- #define OPT6_JUMBO 194 /* Jumbo-Payload */
-
- #define NDX6_LLADDR_SRC 1 /* Source Link-layer Address */
- #define NDX6_LLADDR_TGT 2 /* Target Link-layer Address */
- #define NDX6_PREF_INFO 3 /* Prefix-Information */
- #define NDX6_RDRT_HDR 4 /* Redirected-Header */
- #define NDX6_MTU 5 /* Maximum-Transmit-Unit */
-
- /*
- * Macros on type bits.
- */
- #define OPT6_ACTION(t) ((t)&0xc0) /* action */
- #define OPT6_A_SKIP 0x00 /* skip over */
- #define OPT6_A_DISC 0x40 /* discard */
- #define OPT6_A_FERR 0x80 /* already send error */
- #define OPT6_A_OERR 0xc0 /* send error */
- #define OPT6_RTCHANGE(t) ((t)&0x20) /* change en-route */
-
- /*
- * Options and Extensions layouts.
- */
-
- struct opt6_any { /* common header */
- u_int8_t o6any_ext; /* extension type */
- u_int8_t o6any_len; /* length */
- };
-
- struct opt6_jbo { /* Jumbo-Payload */
- u_int16_t jbo_pad; /* for alignment */
- u_int8_t jbo_ext; /* extension type (194) */
- u_int8_t jbo_len; /* length (4) */
- u_int32_t jbo_plen; /* payload length */
- };
-
- struct opt6_ra { /* Router-Alert */
- u_int8_t ra_ext; /* extension type (TBD) */
- u_int8_t ra_len; /* length (2) */
- u_int16_t ra_code; /* code */
- };
- #define OPT6_RA_GROUP 0 /* ICMPv6 Group Membership */
- #define OPT6_RA_RSVP 1 /* RSVP */
-
- struct ndx6_any { /* common header */
- u_int8_t x6any_ext; /* extension type */
- u_int8_t x6any_len; /* length */
- u_int16_t x6any_res1; /* reserved */
- u_int32_t x6any_res2; /* reserved */
- };
-
- struct ndx6_lladdr { /* Link-layer Address */
- u_int8_t lla_ext; /* extension type (1 or 2) */
- u_int8_t lla_len; /* length (>=1) */
- u_int8_t lla_addr[6]; /* media address */
- };
-
- struct ndx6_pref { /* Prefix-Information */
- u_int8_t pref_ext; /* extension type (3) */
- u_int8_t pref_len; /* length (4) */
- u_int8_t pref_plen; /* prefix size (0..128) */
- u_int8_t pref_flg; /* flags */
- u_int32_t pref_ilife; /* invalidation lifetime */
- u_int32_t pref_dlife; /* deprecation lifetime */
- u_int32_t pref_res2;
- struct in6_addr pref_pref; /* prefix */
- };
- #define NDX6_PREF_FLG_L 0x80 /* On-link flag */
- #define NDX6_PREF_FLG_A 0x40 /* Address-configuration flag */
-
- struct ndx6_mtu { /* Maximum-Transmit-Unit */
- u_int8_t mtu_ext; /* extension type (5) */
- u_int8_t mtu_len; /* length (1) */
- u_int16_t mtu_res; /* reserved (0) */
- u_int32_t mtu_mtu; /* MTU value */
- };
-
- #endif
-