]> The Tcpdump Group git mirrors - tcpdump/blobdiff - icmp6.h
Update from current NetBSD version of ieee80211_radiotap.h.
[tcpdump] / icmp6.h
diff --git a/icmp6.h b/icmp6.h
index d6198d9d293fad13da0a987d1ce8996a93da7ff4..3b782a4461c14b0aefc43fb47904e1231b7abcf0 100644 (file)
--- a/icmp6.h
+++ b/icmp6.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.4 2000-12-17 23:13:32 guy Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.16.2.1 2005-09-05 09:29:28 guy Exp $ (LBL) */
 /*     $NetBSD: icmp6.h,v 1.13 2000/08/03 16:30:37 itojun Exp $        */
 /*     $KAME: icmp6.h,v 1.22 2000/08/03 15:25:16 jinmei Exp $  */
 
@@ -104,9 +104,9 @@ struct icmp6_hdr {
 #define MLD6_LISTENER_DONE             132     /* multicast listener done */
 
 #define ND_ROUTER_SOLICIT              133     /* router solicitation */
-#define ND_ROUTER_ADVERT               134     /* router advertisment */
+#define ND_ROUTER_ADVERT               134     /* router advertisement */
 #define ND_NEIGHBOR_SOLICIT            135     /* neighbor solicitation */
-#define ND_NEIGHBOR_ADVERT             136     /* neighbor advertisment */
+#define ND_NEIGHBOR_ADVERT             136     /* neighbor advertisement */
 #define ND_REDIRECT                    137     /* redirect */
 
 #define ICMP6_ROUTER_RENUMBERING       138     /* router renumbering */
@@ -117,12 +117,20 @@ struct icmp6_hdr {
 #define ICMP6_FQDN_REPLY               140     /* FQDN reply */
 #define ICMP6_NI_QUERY                 139     /* node information request */
 #define ICMP6_NI_REPLY                 140     /* node information reply */
+#define IND_SOLICIT                    141     /* inverse neighbor solicitation */
+#define IND_ADVERT                     142     /* inverse neighbor advertisement */
 
-/* The definitions below are experimental. TBA */
-#define MLD6_MTRACE_RESP               141     /* mtrace response(to sender) */
-#define MLD6_MTRACE                    142     /* mtrace messages */
+#define ICMP6_V2_MEMBERSHIP_REPORT     143     /* v2 membership report */
+#define MLDV2_LISTENER_REPORT          143     /* v2 multicast listener report */
+#define ICMP6_HADISCOV_REQUEST         144
+#define ICMP6_HADISCOV_REPLY           145
+#define ICMP6_MOBILEPREFIX_SOLICIT     146
+#define ICMP6_MOBILEPREFIX_ADVERT      147
 
-#define ICMP6_MAXTYPE                  142
+#define MLD6_MTRACE_RESP               200     /* mtrace response(to sender) */
+#define MLD6_MTRACE                    201     /* mtrace messages */
+
+#define ICMP6_MAXTYPE                  201
 
 #define ICMP6_DST_UNREACH_NOROUTE      0       /* no route to destination */
 #define ICMP6_DST_UNREACH_ADMIN                1       /* administratively prohibited */
@@ -170,6 +178,9 @@ struct mld6_hdr {
 #define mld6_maxdelay  mld6_hdr.icmp6_data16[0]
 #define mld6_reserved  mld6_hdr.icmp6_data16[1]
 
+#define MLD_MINLEN     24
+#define MLDV2_MINLEN   28
+
 /*
  * Neighbor Discovery
  */
@@ -198,6 +209,19 @@ struct nd_router_advert {  /* router advertisement */
 #define nd_ra_flags_reserved   nd_ra_hdr.icmp6_data8[1]
 #define ND_RA_FLAG_MANAGED     0x80
 #define ND_RA_FLAG_OTHER       0x40
+#define ND_RA_FLAG_HOME_AGENT  0x20
+
+/*
+ * Router preference values based on draft-draves-ipngwg-router-selection-01.
+ * These are non-standard definitions.
+ */
+#define ND_RA_FLAG_RTPREF_MASK 0x18 /* 00011000 */
+
+#define ND_RA_FLAG_RTPREF_HIGH 0x08 /* 00001000 */
+#define ND_RA_FLAG_RTPREF_MEDIUM       0x00 /* 00000000 */
+#define ND_RA_FLAG_RTPREF_LOW  0x18 /* 00011000 */
+#define ND_RA_FLAG_RTPREF_RSV  0x10 /* 00010000 */
+
 #define nd_ra_router_lifetime  nd_ra_hdr.icmp6_data16[1]
 
 struct nd_neighbor_solicit {   /* neighbor solicitation */
@@ -221,10 +245,10 @@ struct nd_neighbor_advert {       /* neighbor advertisement */
 #define nd_na_code             nd_na_hdr.icmp6_code
 #define nd_na_cksum            nd_na_hdr.icmp6_cksum
 #define nd_na_flags_reserved   nd_na_hdr.icmp6_data32[0]
-/* netowkr endian */
-#define ND_NA_FLAG_ROUTER              ((u_int32_t)htonl(0x80000000))
-#define ND_NA_FLAG_SOLICITED           ((u_int32_t)htonl(0x40000000))
-#define ND_NA_FLAG_OVERRIDE            ((u_int32_t)htonl(0x20000000))
+
+#define ND_NA_FLAG_ROUTER              0x80000000
+#define ND_NA_FLAG_SOLICITED           0x40000000
+#define ND_NA_FLAG_OVERRIDE            0x20000000
 
 struct nd_redirect {           /* redirect */
        struct icmp6_hdr        nd_rd_hdr;
@@ -249,16 +273,19 @@ struct nd_opt_hdr {               /* Neighbor discovery option header */
 #define ND_OPT_PREFIX_INFORMATION      3
 #define ND_OPT_REDIRECTED_HEADER       4
 #define ND_OPT_MTU                     5
-#define ND_OPT_ADVINT                  7
+#define ND_OPT_ADVINTERVAL             7
+#define ND_OPT_HOMEAGENT_INFO          8
+#define ND_OPT_ROUTE_INFO              9       /* draft-ietf-ipngwg-router-preference, not officially assigned yet */
+
 
 struct nd_opt_prefix_info {    /* prefix information */
        u_int8_t        nd_opt_pi_type;
        u_int8_t        nd_opt_pi_len;
        u_int8_t        nd_opt_pi_prefix_len;
        u_int8_t        nd_opt_pi_flags_reserved;
-       u_int32_t       nd_opt_pi_valid_time;
-       u_int32_t       nd_opt_pi_preferred_time;
-       u_int32_t       nd_opt_pi_reserved2;
+       u_int8_t        nd_opt_pi_valid_time[4];
+       u_int8_t        nd_opt_pi_preferred_time[4];
+       u_int8_t        nd_opt_pi_reserved2[4];
        struct in6_addr nd_opt_pi_prefix;
 };
 
@@ -281,11 +308,28 @@ struct nd_opt_mtu {               /* MTU option */
        u_int32_t       nd_opt_mtu_mtu;
 };
 
-struct nd_opt_advint {         /* Advertisement interval option */
-       u_int8_t        nd_opt_advint_type;
-       u_int8_t        nd_opt_advint_len;
-       u_int16_t       nd_opt_advint_reserved;
-       u_int32_t       nd_opt_advint_advint;
+struct nd_opt_advinterval {    /* Advertisement interval option */
+       u_int8_t        nd_opt_adv_type;
+       u_int8_t        nd_opt_adv_len;
+       u_int16_t       nd_opt_adv_reserved;
+       u_int32_t       nd_opt_adv_interval;
+};
+
+struct nd_opt_homeagent_info { /* Home Agent info */
+       u_int8_t        nd_opt_hai_type;
+       u_int8_t        nd_opt_hai_len;
+       u_int16_t       nd_opt_hai_reserved;
+       int16_t         nd_opt_hai_preference;
+       u_int16_t       nd_opt_hai_lifetime;
+};
+
+struct nd_opt_route_info {     /* route info */
+       u_int8_t        nd_opt_rti_type;
+       u_int8_t        nd_opt_rti_len;
+       u_int8_t        nd_opt_rti_prefixlen;
+       u_int8_t        nd_opt_rti_flags;
+       u_int32_t       nd_opt_rti_lifetime;
+       /* prefix follows */
 };
 
 /*
@@ -356,7 +400,7 @@ struct icmp6_router_renum { /* router renumbering header */
 };
 #define ICMP6_RR_FLAGS_TEST            0x80
 #define ICMP6_RR_FLAGS_REQRESULT       0x40
-#define ICMP6_RR_FLAGS_ALLIF           0x20
+#define ICMP6_RR_FLAGS_FORCEAPPLY      0x20
 #define ICMP6_RR_FLAGS_SPECSITE                0x10
 #define ICMP6_RR_FLAGS_PREVDONE                0x08