aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/ip/ip6_hop_by_hop.h
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/ip/ip6_hop_by_hop.h')
-rw-r--r--vnet/vnet/ip/ip6_hop_by_hop.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/vnet/vnet/ip/ip6_hop_by_hop.h b/vnet/vnet/ip/ip6_hop_by_hop.h
index 82bafc5777b..fc98ae2f668 100644
--- a/vnet/vnet/ip/ip6_hop_by_hop.h
+++ b/vnet/vnet/ip/ip6_hop_by_hop.h
@@ -23,13 +23,84 @@ typedef struct {
/* Trace data processing callback */
void *ioam_end_of_path_cb;
+ /* Configuration data */
+ /* Adjacency */
+ ip6_address_t adj;
+#define IOAM_HBYH_ADD 0
+#define IOAM_HBYH_MOD 1
+#define IOAM_HBYH_POP 2
+ u8 ioam_flag;
+ /* time scale transform. Joy. */
+ u32 unix_time_0;
+ f64 vlib_time_0;
+
+
+ /* Trace option */
+ u8 trace_type;
+ u8 trace_option_elts;
/* Configured node-id */
u32 node_id;
+ u32 app_data;
+
+ /* PoW option */
+ u8 has_pow_option;
+
+#define PPC_NONE 0
+#define PPC_ENCAP 1
+#define PPC_DECAP 2
+ u8 has_ppc_option;
+
+#define TSP_SECONDS 0
+#define TSP_MILLISECONDS 1
+#define TSP_MICROSECONDS 2
+#define TSP_NANOSECONDS 3
+ /* Time stamp precision. This is enumerated to above four options */
+ u32 trace_tsp;
/* convenience */
vlib_main_t * vlib_main;
vnet_main_t * vnet_main;
} ip6_hop_by_hop_main_t;
+extern ip6_hop_by_hop_main_t ip6_hop_by_hop_main;
+
+extern u8 * format_path_map(u8 * s, va_list * args);
+extern clib_error_t *
+ip6_ioam_trace_profile_set(u32 trace_option_elts, u32 trace_type, u32 node_id,
+ u32 app_data, int has_pow_option, u32 trace_tsp,
+ int has_e2e_option);
+extern int ip6_ioam_set_destination (ip6_address_t *addr, u32 mask_width,
+ u32 vrf_id, int is_add, int is_pop, int is_none);
+
+
+extern clib_error_t * clear_ioam_trace_fn();
+
+static inline u8 is_zero_ip4_address (ip4_address_t *a)
+{
+ return (a->as_u32 == 0);
+}
+
+static inline void copy_ip6_address (ip6_address_t *dst, ip6_address_t *src)
+{
+ dst->as_u64[0] = src->as_u64[0];
+ dst->as_u64[1] = src->as_u64[1];
+}
+
+static inline void set_zero_ip6_address (ip6_address_t *a)
+{
+ a->as_u64[0] = 0;
+ a->as_u64[1] = 0;
+}
+
+static inline u8 cmp_ip6_address (ip6_address_t *a1, ip6_address_t *a2)
+{
+ return ((a1->as_u64[0] == a2->as_u64[0]) && (a1->as_u64[1] == a2->as_u64[1]));
+}
+static inline u8 is_zero_ip6_address (ip6_address_t *a)
+{
+ return ((a->as_u64[0] == 0) && (a->as_u64[1] == 0));
+}
+
+extern ip6_hop_by_hop_main_t * hm;
#endif /* __included_ip6_hop_by_hop_h__ */