X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-internal_dev.c;h=84b90b57191a508b33c09d01704a966705101ed8;hb=cb49ee4fd15e1b24aaae4a2d25f3dd538734b4df;hp=6cbfdf80db3bc1172268f5f3032db023a98cd199;hpb=63db6ec35ddc2432dda059f277257886c2d1ba8f;p=openvswitch diff --git a/datapath/vport-internal_dev.c b/datapath/vport-internal_dev.c index 6cbfdf80..84b90b57 100644 --- a/datapath/vport-internal_dev.c +++ b/datapath/vport-internal_dev.c @@ -82,6 +82,7 @@ static int internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev) skb_reset_mac_header(skb); compute_ip_summed(skb, true); + OVS_CB(skb)->flow = NULL; vport_receive(vport, skb); @@ -293,7 +294,7 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb) struct vport_ops internal_vport_ops = { .type = "internal", - .flags = VPORT_F_REQUIRED | VPORT_F_GEN_STATS, + .flags = VPORT_F_REQUIRED | VPORT_F_GEN_STATS | VPORT_F_FLOW, .create = internal_dev_create, .destroy = internal_dev_destroy, .attach = internal_dev_attach, @@ -328,6 +329,11 @@ int is_internal_vport(const struct vport *vport) struct vport *internal_dev_get_vport(struct net_device *netdev) { - struct internal_dev *internal_dev = internal_dev_priv(netdev); + struct internal_dev *internal_dev; + + if (!is_internal_dev(netdev)) + return NULL; + + internal_dev = internal_dev_priv(netdev); return rcu_dereference(internal_dev->attached_vport); }