X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-capwap.c;h=5f31732e81dd4f8b2b075e74aed96cd1ae13e228;hb=refs%2Fheads%2Fmanual;hp=b4c3b49433d299845ab72a87b44c31866b5b02cf;hpb=05a9d485c061495d0ba83bff7e26d6eb077688aa;p=openvswitch diff --git a/datapath/vport-capwap.c b/datapath/vport-capwap.c index b4c3b494..5f31732e 100644 --- a/datapath/vport-capwap.c +++ b/datapath/vport-capwap.c @@ -155,28 +155,6 @@ static struct inet_frags frag_state = { .secret_interval = CAPWAP_FRAG_SECRET_INTERVAL, }; -static void get_capwap_param(const struct tnl_mutable_config *mutable, - const struct ovs_key_ipv4_tunnel *tun_key, - u32 *flags, __be64 *out_key) -{ - if (tun_key->ipv4_dst) { - *flags = 0; - - if (tun_key->tun_flags & OVS_FLOW_TNL_F_KEY) - *flags = TNL_F_OUT_KEY_ACTION; - if (tun_key->tun_flags & OVS_FLOW_TNL_F_CSUM) - *flags |= TNL_F_CSUM; - *out_key = tun_key->tun_id; - } else { - *flags = mutable->flags; - if (mutable->flags & TNL_F_OUT_KEY_ACTION) - *out_key = tun_key->tun_id; - else - *out_key = mutable->out_key; - - } -} - static int capwap_hdr_len(const struct tnl_mutable_config *mutable, const struct ovs_key_ipv4_tunnel *tun_key) { @@ -184,7 +162,7 @@ static int capwap_hdr_len(const struct tnl_mutable_config *mutable, u32 flags; __be64 out_key; - get_capwap_param(mutable, tun_key, &flags, &out_key); + tnl_get_param(mutable, tun_key, &flags, &out_key); /* CAPWAP has no checksums. */ if (flags & TNL_F_CSUM) @@ -211,7 +189,7 @@ static struct sk_buff *capwap_build_header(const struct vport *vport, u32 flags; __be64 out_key; - get_capwap_param(mutable, tun_key, &flags, &out_key); + tnl_get_param(mutable, tun_key, &flags, &out_key); udph->source = htons(CAPWAP_SRC_PORT); udph->dest = htons(CAPWAP_DST_PORT); @@ -356,10 +334,12 @@ static int capwap_rcv(struct sock *sk, struct sk_buff *skb) } if (key_present && mutable->key.daddr && - !(mutable->flags & TNL_F_IN_KEY_MATCH)) + !(mutable->flags & TNL_F_IN_KEY_MATCH)) { key_present = false; + key = 0; + } - tnl_tun_key_init(&tun_key, iph, key, key_present ? OVS_FLOW_TNL_F_KEY : 0); + tnl_tun_key_init(&tun_key, iph, key, key_present ? OVS_TNL_F_KEY : 0); OVS_CB(skb)->tun_key = &tun_key; ovs_tnl_rcv(vport, skb);