aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/ip/ip6.h
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/ip/ip6.h')
-rw-r--r--vnet/vnet/ip/ip6.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/vnet/vnet/ip/ip6.h b/vnet/vnet/ip/ip6.h
index 4d0e8564..b0384d3a 100644
--- a/vnet/vnet/ip/ip6.h
+++ b/vnet/vnet/ip/ip6.h
@@ -42,8 +42,9 @@
#include <vlib/mc.h>
#include <vnet/ip/ip6_packet.h>
+#include <vnet/ip/ip6_hop_by_hop_packet.h>
#include <vnet/ip/lookup.h>
-
+#include <stdbool.h>
#include <vppinfra/bihash_24_8.h>
#include <vppinfra/bihash_template.h>
@@ -176,6 +177,9 @@ typedef struct ip6_main_t {
u8 pad[3];
} host_config;
+
+ /* HBH processing enabled? */
+ u8 hbh_enabled;
} ip6_main_t;
/* Global ip6 main structure. */
@@ -521,4 +525,23 @@ ip6_compute_flow_hash (ip6_header_t * ip, u32 flow_hash_config)
return (u32) c;
}
+/*
+ * Hop-by-Hop handling
+ */
+typedef struct {
+ /* Array of function pointers to HBH option handling routines */
+ int (*options[256])(vlib_buffer_t *b, ip6_header_t *ip, ip6_hop_by_hop_option_t *opt);
+ u8 *(*trace[256])(u8 *s, ip6_hop_by_hop_option_t *opt);
+} ip6_hop_by_hop_main_t;
+
+extern ip6_hop_by_hop_main_t ip6_hop_by_hop_main;
+
+int ip6_hbh_register_option (u8 option,
+ int options(vlib_buffer_t *b, ip6_header_t *ip, ip6_hop_by_hop_option_t *opt),
+ u8 *trace(u8 *s, ip6_hop_by_hop_option_t *opt));
+int ip6_hbh_unregister_option (u8 option);
+
+/* Flag used by IOAM code. Classifier sets it pop-hop-by-hop checks it */
+#define OI_DECAP 100
+
#endif /* included_ip_ip6_h */