From: Klement Sekera Date: Mon, 7 Oct 2019 12:20:39 +0000 (+0000) Subject: ip: add tracing for ipv6 frag headers X-Git-Tag: v20.05-rc0~693 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=0eb75d0e9c7624a4e8ac69fea7dbe12d39b75096;p=vpp.git ip: add tracing for ipv6 frag headers Type: feature Change-Id: I0e049b28d8c21b67ea4545e865eda4e88f10e485 Signed-off-by: Klement Sekera --- diff --git a/src/vnet/ip/ip6_input.c b/src/vnet/ip/ip6_input.c index 0450064eafe..6fab5822da2 100644 --- a/src/vnet/ip/ip6_input.c +++ b/src/vnet/ip/ip6_input.c @@ -247,6 +247,25 @@ VLIB_REGISTER_NODE (ip6_input_node) = { }; /* *INDENT-ON* */ +static u8 * +format_ipv6_fragmentation (u8 * s, va_list * args) +{ + ip6_frag_hdr_t *h = va_arg (*args, ip6_frag_hdr_t *); + u32 max_header_bytes = va_arg (*args, u32); + u32 header_bytes; + + header_bytes = sizeof (h[0]); + if (max_header_bytes != 0 && header_bytes > max_header_bytes) + return format (s, "ipv6 frag header truncated"); + + s = + format (s, + "fragmentation header: next_hdr: %u, rsv: %u, frag_offset_and_more: %u, id: %u", + h->next_hdr, h->rsv, h->fragment_offset_and_more, + clib_net_to_host_u32 (h->identification)); + return s; +} + static clib_error_t * ip6_init (vlib_main_t * vm) { @@ -266,6 +285,11 @@ ip6_init (vlib_main_t * vm) /* Default hop limit for packets we generate. */ ip6_main.host_config.ttl = 64; + + uword *u = hash_get (ip_main.protocol_info_by_name, "IPV6_FRAGMENTATION"); + ip_protocol_info_t *info = vec_elt_at_index (ip_main.protocol_infos, *u); + ASSERT (NULL == info->format_header); + info->format_header = format_ipv6_fragmentation; return /* no error */ 0; }