X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-capwap.c;h=8d78b6d10df0d77772b473567e784c8fdc93792c;hb=dfbf7f354416264a0b84b09bf882ac0932e78c8b;hp=76db8a737e219188bcb5e23a6db15a83598a29c6;hpb=f613a0d72c521ca3a4eeb2c29ac523f6fdf72667;p=openvswitch diff --git a/datapath/vport-capwap.c b/datapath/vport-capwap.c index 76db8a73..8d78b6d1 100644 --- a/datapath/vport-capwap.c +++ b/datapath/vport-capwap.c @@ -334,8 +334,8 @@ static int capwap_rcv(struct sock *sk, struct sk_buff *skb) goto out; iph = ip_hdr(skb); - vport = tnl_find_port(iph->daddr, iph->saddr, key, - TNL_T_PROTO_CAPWAP | TNL_T_KEY_EITHER, &mutable); + vport = tnl_find_port(iph->daddr, iph->saddr, key, TNL_T_PROTO_CAPWAP, + &mutable); if (unlikely(!vport)) { icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); goto error; @@ -507,13 +507,13 @@ static struct sk_buff *fragment(struct sk_buff *skb, const struct vport *vport, remaining -= frag_size; } - goto out; + consume_skb(skb); + return result; error: tnl_free_linked_skbs(result); -out: kfree_skb(skb); - return result; + return NULL; } /* All of the following functions relate to fragmentation reassembly. */