X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Fvport-capwap.c;h=f45d3491349b03ed5afc07c6d9d572149ecb486d;hb=5ca1ba484bd9ade5116a49cf241cb98219d7d696;hp=8a89180e5722f71e16e506c53879fe1fcffb1efc;hpb=8432bb09305ac380451fc1bbd39336d6e2c472eb;p=sliver-openvswitch.git diff --git a/datapath/vport-capwap.c b/datapath/vport-capwap.c index 8a89180e5..f45d34913 100644 --- a/datapath/vport-capwap.c +++ b/datapath/vport-capwap.c @@ -27,7 +27,6 @@ #include "datapath.h" #include "tunnel.h" #include "vport.h" -#include "vport-generic.h" #define CAPWAP_SRC_PORT 58881 #define CAPWAP_DST_PORT 58882 @@ -143,7 +142,11 @@ static struct sk_buff *defrag(struct sk_buff *, bool frag_last); static void capwap_frag_init(struct inet_frag_queue *, void *match); static unsigned int capwap_frag_hash(struct inet_frag_queue *); +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) static int capwap_frag_match(struct inet_frag_queue *, void *match); +#else +static bool capwap_frag_match(struct inet_frag_queue *, void *match); +#endif static void capwap_frag_expire(unsigned long ifq); static struct inet_frags frag_state = { @@ -334,8 +337,10 @@ 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_TNL_F_KEY : 0); OVS_CB(skb)->tun_key = &tun_key; @@ -767,8 +772,7 @@ static struct sk_buff *defrag(struct sk_buff *skb, bool frag_last) u16 frag_off; struct frag_queue *fq; - if (atomic_read(&ns_frag_state->mem) > ns_frag_state->high_thresh) - inet_frag_evictor(ns_frag_state, &frag_state); + inet_frag_evictor(ns_frag_state, &frag_state, false); match.daddr = iph->daddr; match.saddr = iph->saddr; @@ -802,7 +806,11 @@ static unsigned int capwap_frag_hash(struct inet_frag_queue *ifq) return frag_hash(&ifq_cast(ifq)->match); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) static int capwap_frag_match(struct inet_frag_queue *ifq, void *a_) +#else +static bool capwap_frag_match(struct inet_frag_queue *ifq, void *a_) +#endif { struct frag_match *a = a_; struct frag_match *b = &ifq_cast(ifq)->match; @@ -838,9 +846,6 @@ const struct vport_ops ovs_capwap_vport_ops = { .get_addr = ovs_tnl_get_addr, .get_options = ovs_tnl_get_options, .set_options = ovs_tnl_set_options, - .get_dev_flags = ovs_vport_gen_get_dev_flags, - .is_running = ovs_vport_gen_is_running, - .get_operstate = ovs_vport_gen_get_operstate, .send = ovs_tnl_send, }; #else