X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fethernet%2Fnode.c;h=428a8d5662cadd7e232ea347a901e39f64e5510a;hb=d28437cdf2133533c9092b881ce0e4c243d6c1f6;hp=488218e1a872d97c757b0158c95d80c7b05c4208;hpb=d459bf344e20ffb38a869c9fef2211f55d766b02;p=vpp.git diff --git a/src/vnet/ethernet/node.c b/src/vnet/ethernet/node.c index 488218e1a87..428a8d5662c 100755 --- a/src/vnet/ethernet/node.c +++ b/src/vnet/ethernet/node.c @@ -859,7 +859,7 @@ eth_input_process_frame (vlib_main_t * vm, vlib_node_runtime_t * node, if (dmac_check) { - if (vec_len (ei->secondary_addrs)) + if (ei && vec_len (ei->secondary_addrs)) eth_input_process_frame_dmac_check (hi, dmacs, dmacs_bad, n_packets, ei, 1 /* have_sec_dmac */ ); else @@ -1125,8 +1125,18 @@ ethernet_input_trace (vlib_main_t * vm, vlib_node_runtime_t * node, if (pp->pcap_sw_if_index == 0 || pp->pcap_sw_if_index == vnet_buffer (b0)->sw_if_index[VLIB_RX]) { - pcap_add_buffer (&pp->pcap_main, vm, bi0, - pp->max_bytes_per_pkt); + vnet_main_t *vnm = vnet_get_main (); + vnet_hw_interface_t *hi = + vnet_get_sup_hw_interface + (vnm, vnet_buffer (b0)->sw_if_index[VLIB_RX]); + + /* Capture pkt if not filtered, or if filter hits */ + if (hi->trace_classify_table_index == ~0 || + vnet_is_packet_traced_inline + (b0, hi->trace_classify_table_index, + 0 /* full classify */ )) + pcap_add_buffer (&pp->pcap_main, vm, bi0, + pp->max_bytes_per_pkt); } } }