I think it would be OK to do this: tnlInProto = in_dsp ? dpif_sflow_tunnel_proto(in_dsp->tunnel_type) : 0;
Neil ------ Neil McKee InMon Corp. http://www.inmon.com On Fri, Aug 26, 2016 at 2:30 AM, 张东亚 <fortitude.zh...@gmail.com> wrote: > Hi List, > > Recently we are testing sFlow on OVS 2.5.0, since OVS decide whether do > sample based on ingress bridge, we then enable sFlow on br-tun, and > encounter following crash: > > #0 0x0000000000434ca8 in dpif_sflow_received (ds=0x4266100, > packet=packet@entry=0x7f3cb3fc8e18, flow=flow@entry=0x7f3cb3fd8810, > odp_in_port=<optimized out>, cookie=cookie@entry=0x7f3cb3fc3440, > sflow_actions=0x7f3cb3fc36c0) at ofproto/ofproto-dpif-sflow.c:1292 > #1 0x00000000004366c0 in process_upcall (udpif=udpif@entry=0x23bb570, > upcall=upcall@entry=0x7f3cb3fe1210, > odp_actions=odp_actions@entry=0x7f3cb3fe1280, > wc=wc@entry=0x7f3cb3fe12c0) > at ofproto/ofproto-dpif-upcall.c:1236 > #2 0x0000000000437087 in recv_upcalls (handler=<error reading variable: > Unhandled dwarf expression opcode 0xfa>, handler=<error reading variable: > Unhandled dwarf expression opcode 0xfa>) > at ofproto/ofproto-dpif-upcall.c:778 > #3 0x000000000043752a in udpif_upcall_handler (arg=0x24a3490) at > ofproto/ofproto-dpif-upcall.c:696 > #4 0x00000000004bbc54 in ovsthread_wrapper (aux_=<optimized out>) at > lib/ovs-thread.c:340 > #5 0x00007f3cb9f96e0e in start_thread () from /lib/x86_64-linux-gnu/ > libpthread.so.0 > #6 0x00007f3cba2940fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 > > > After navigate the code, we think the following commit cause the crash: > > 7321bda384c366ae36bbca445f235a65d8f2b1f8 > > Extend sFlow agent to report tunnel and MPLS structures > > It seems that in the following code assume in vsp have a value, however > for tunnel port, in vsp will always be NULL since there is only on > vxlan_sys_4789 datapath port. > > > if (flow->tunnel.ip_dst) { > memset(&tnlInElem, 0, sizeof(tnlInElem)); > tnlInElem.tag = SFLFLOW_EX_IPV4_TUNNEL_INGRESS; > tnlInProto = dpif_sflow_tunnel_proto(in_dsp->tunnel_type); // BUG: > in_dsp will be NULL... > dpif_sflow_tunnel_v4(tnlInProto, > &flow->tunnel, > &tnlInElem.flowType.ipv4); > SFLADD_ELEMENT(&fs, &tnlInElem); > if (flow->tunnel.tun_id) { > memset(&vniInElem, 0, sizeof(vniInElem)); > vniInElem.tag = SFLFLOW_EX_VNI_INGRESS; > vniInElem.flowType.tunnel_vni.vni > = ntohll(flow->tunnel.tun_id); > SFLADD_ELEMENT(&fs, &vniInElem); > } > } > > Does anyone encounter the same value? I am wondering how we can get tunnel > types from the datapath information. > > I will try to find a fix later. > > _______________________________________________ > discuss mailing list > discuss@openvswitch.org > http://openvswitch.org/mailman/listinfo/discuss > >
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss