X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface_format.c;h=8278102c6440e87cb8d005003348045a2d5816cd;hb=59f71132e;hp=347dd4940d4ad3146ef31b0c1632e0af8618ca7a;hpb=5554c56a65cff3ef90844eb5e63d89283fae74df;p=vpp.git diff --git a/src/vnet/interface_format.c b/src/vnet/interface_format.c index 347dd4940d4..8278102c644 100644 --- a/src/vnet/interface_format.c +++ b/src/vnet/interface_format.c @@ -41,6 +41,42 @@ #include #include #include +#include + +u8 * +format_vtr (u8 * s, va_list * args) +{ + u32 vtr_op = va_arg (*args, u32); + u32 dot1q = va_arg (*args, u32); + u32 tag1 = va_arg (*args, u32); + u32 tag2 = va_arg (*args, u32); + switch (vtr_op) + { + case L2_VTR_DISABLED: + return format (s, "none"); + case L2_VTR_PUSH_1: + return format (s, "push-1 %s %d", dot1q ? "dot1q" : "dot1ad", tag1); + case L2_VTR_PUSH_2: + return format (s, "push-2 %s %d %d", dot1q ? "dot1q" : "dot1ad", tag1, + tag2); + case L2_VTR_POP_1: + return format (s, "pop-1"); + case L2_VTR_POP_2: + return format (s, "pop-2"); + case L2_VTR_TRANSLATE_1_1: + return format (s, "trans-1-1 %s %d", dot1q ? "dot1q" : "dot1ad", tag1); + case L2_VTR_TRANSLATE_1_2: + return format (s, "trans-1-2 %s %d %d", dot1q ? "dot1q" : "dot1ad", + tag1, tag2); + case L2_VTR_TRANSLATE_2_1: + return format (s, "trans-2-1 %s %d", dot1q ? "dot1q" : "dot1ad", tag1); + case L2_VTR_TRANSLATE_2_2: + return format (s, "trans-2-2 %s %d %d", dot1q ? "dot1q" : "dot1ad", + tag1, tag2); + default: + return format (s, "none"); + } +} u8 * format_vnet_sw_interface_flags (u8 * s, va_list * args) @@ -444,6 +480,17 @@ format_vnet_buffer_opaque (u8 * s, va_list * args) "ip.reass.next_index: %d, ip.reass.estimated_mtu: %d", o->ip.reass.next_index, (u32) (o->ip.reass.estimated_mtu)); vec_add1 (s, '\n'); + s = format (s, + "ip.reass.error_next_index: %d, ip.reass.owner_thread_index: %d", + o->ip.reass.error_next_index, + (u32) (o->ip.reass.owner_thread_index)); + vec_add1 (s, '\n'); + s = format (s, + "ip.reass.ip_proto: %d, ip.reass.l4_src_port: %d", + o->ip.reass.ip_proto, (u32) (o->ip.reass.l4_src_port)); + vec_add1 (s, '\n'); + s = format (s, "ip.reass.l4_dst_port: %d", o->ip.reass.l4_dst_port); + vec_add1 (s, '\n'); s = format (s, "ip.reass.fragment_first: %d ip.reass.fragment_last: %d", @@ -469,13 +516,15 @@ format_vnet_buffer_opaque (u8 * s, va_list * args) (u32) (o->mpls.ttl), (u32) (o->mpls.exp), (u32) (o->mpls.first), o->mpls.save_rewrite_length, (u32) (o->mpls.bier.n_bytes)); vec_add1 (s, '\n'); + s = format (s, "mpls.mpls_hdr_length: %d", (u32) (o->mpls.mpls_hdr_length)); + vec_add1 (s, '\n'); s = format (s, - "l2.feature_bitmap: %08x, l2.bd_index: %d, l2.l2_len: %d, " - "l2.shg: %d, l2.l2fib_sn: %d, l2.bd_age: %d", - o->l2.feature_bitmap, (u32) (o->l2.bd_index), - (u32) (o->l2.l2_len), (u32) (o->l2.shg), (u32) (o->l2.l2fib_sn), - (u32) (o->l2.bd_age)); + "l2.feature_bitmap: %08x, l2.bd_index: %d, l2.l2fib_sn %d, " + "l2.l2_len: %d, l2.shg: %d, l2.bd_age: %d", + (u32) (o->l2.feature_bitmap), (u32) (o->l2.bd_index), + (u32) (o->l2.l2fib_sn), + (u32) (o->l2.l2_len), (u32) (o->l2.shg), (u32) (o->l2.bd_age)); vec_add1 (s, '\n'); s = format (s, @@ -499,18 +548,24 @@ format_vnet_buffer_opaque (u8 * s, va_list * args) s = format (s, "policer.index: %d", o->policer.index); vec_add1 (s, '\n'); - s = format (s, "ipsec.sad_index: %d", o->ipsec.sad_index); + s = format (s, "ipsec.sad_index: %d, ipsec.protect_index", + o->ipsec.sad_index, o->ipsec.protect_index); vec_add1 (s, '\n'); s = format (s, "map.mtu: %d", (u32) (o->map.mtu)); vec_add1 (s, '\n'); s = format (s, - "map_t.v6.saddr: 0x%x, map_t.v6.daddr: 0x%x, " - "map_t.v6.frag_offset: %d, map_t.v6.l4_offset: %d", + "map_t.map_domain_index: %d, map_t.v6.saddr: 0x%x, " + "map_t.v6.daddr: 0x%x, map_t.v6.frag_offset: %d, " + "map_t.v6.l4_offset: %d, map_t.v6.l4_protocol: %d, " + "map.t.checksum_offset: %d", + o->map_t.map_domain_index, o->map_t.v6.saddr, o->map_t.v6.daddr, - (u32) (o->map_t.v6.frag_offset), (u32) (o->map_t.v6.l4_offset)); + (u32) (o->map_t.v6.frag_offset), (u32) (o->map_t.v6.l4_offset), + (u32) (o->map_t.v6.l4_protocol), + (u32) (o->map_t.checksum_offset)); vec_add1 (s, '\n'); s = format (s, @@ -533,12 +588,11 @@ format_vnet_buffer_opaque (u8 * s, va_list * args) vec_add1 (s, '\n'); s = format - (s, "tcp.connection_index: %d, tcp.seq_number: %d, tcp.seq_end: %d, " - "tcp.ack_number: %d, tcp.hdr_offset: %d, tcp.data_offset: %d", - o->tcp.connection_index, - o->tcp.seq_number, - o->tcp.seq_end, - o->tcp.ack_number, + (s, + "tcp.connection_index: %d, tcp.seq_number: %d, tcp.next_node_opaque: %d " + "tcp.seq_end: %d, tcp.ack_number: %d, tcp.hdr_offset: %d, " + "tcp.data_offset: %d", o->tcp.connection_index, o->tcp.next_node_opaque, + o->tcp.seq_number, o->tcp.seq_end, o->tcp.ack_number, (u32) (o->tcp.hdr_offset), (u32) (o->tcp.data_offset)); vec_add1 (s, '\n'); @@ -585,6 +639,10 @@ format_vnet_buffer_opaque2 (u8 * s, va_list * args) (u32) (o->gbp.flags), (u32) (o->gbp.sclass)); vec_add1 (s, '\n'); + s = format (s, "gso_size: %d, gso_l4_hdr_sz: %d", + (u32) (o->gso_size), (u32) (o->gso_l4_hdr_sz)); + vec_add1 (s, '\n'); + s = format (s, "pg_replay_timestamp: %llu", (u32) (o->pg_replay_timestamp)); vec_add1 (s, '\n'); @@ -612,6 +670,34 @@ vnet_register_format_buffer_opaque2_helper (vnet_buffer_opquae_formatter_t fp) } +uword +unformat_vnet_buffer_flags (unformat_input_t * input, va_list * args) +{ + u32 *flagp = va_arg (*args, u32 *); + int rv = 0; + u32 flags = 0; + + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + { + /* Red herring, there is no such buffer flag */ + if (unformat (input, "avail8")) + return 0; +#define _(bit,enum,str,verbose) \ + else if (unformat (input, str)) \ + { \ + flags |= (1 << LOG2_VLIB_BUFFER_FLAG_USER(bit)); \ + rv = 1; \ + } + foreach_vnet_buffer_flag +#undef _ + else + break; + } + if (rv) + *flagp = flags; + return rv; +} + uword unformat_vnet_hw_interface (unformat_input_t * input, va_list * args) {