IPv6 HBH: Refactor code. Separate out RFC2460 HBH handling and the more experimental
[vpp.git] / vnet / vnet / ip / ip6_hop_by_hop_packet.h
index 57433ac..708275a 100644 (file)
@@ -27,20 +27,20 @@ typedef struct {
 
 typedef struct {
   /* Option Type */
-#define HBH_OPTION_TYPE_SKIP_UNKNOWN (0x0 << 6)
-#define HBH_OPTION_TYPE_DISCARD_UNKNOWN (0x1 << 6)
-#define HBH_OPTION_TYPE_DISCARD_UNKNOWN_ICMP (0x2 << 6)
-#define HBH_OPTION_TYPE_DISCARD_UNKNOWN_ICMP_NOT_MCAST (0x3 << 6)
+#define HBH_OPTION_TYPE_SKIP_UNKNOWN (0x00)
+#define HBH_OPTION_TYPE_DISCARD_UNKNOWN (0x40)
+#define HBH_OPTION_TYPE_DISCARD_UNKNOWN_ICMP (0x80)
+#define HBH_OPTION_TYPE_DISCARD_UNKNOWN_ICMP_NOT_MCAST (0xc0)
+#define HBH_OPTION_TYPE_HIGH_ORDER_BITS (0xc0)
 #define HBH_OPTION_TYPE_DATA_CHANGE_ENROUTE (1<<5)
-#define HBH_OPTION_TYPE_MASK (0x1F)
   u8 type;
   /* Length in octets of the option data field */
   u8 length;
 } ip6_hop_by_hop_option_t;
 
 /* $$$$ IANA banana constants */
-#define HBH_OPTION_TYPE_IOAM_TRACE_DATA_LIST 27
-#define HBH_OPTION_TYPE_IOAM_PROOF_OF_WORK 28
+#define HBH_OPTION_TYPE_IOAM_TRACE_DATA_LIST 59 /* Third highest bit set (change en-route) */
+#define HBH_OPTION_TYPE_IOAM_PROOF_OF_WORK 60   /* Third highest bit set (change en-route) */
 #define HBH_OPTION_TYPE_IOAM_EDGE_TO_EDGE 29
 
 /*