update sliver-ovs to new ovsdb syntax
[sliver-openvswitch.git] / datapath / vport-lisp.c
index 554495d..54c10ae 100644 (file)
@@ -218,8 +218,7 @@ static int lisp_rcv(struct sock *sk, struct sk_buff *skb)
 
        /* Save outer tunnel values */
        iph = ip_hdr(skb);
-       tnl_tun_key_init(&tun_key, iph, key, OVS_TNL_F_KEY);
-       OVS_CB(skb)->tun_key = &tun_key;
+       tnl_tun_key_init(&tun_key, iph, key, TUNNEL_KEY);
 
        /* Drop non-IP inner packets */
        inner_iph = (struct iphdr *)(lisph + 1);
@@ -241,7 +240,9 @@ static int lisp_rcv(struct sock *sk, struct sk_buff *skb)
        ethh->h_source[0] = 0x02;
        ethh->h_proto = protocol;
 
-       ovs_tnl_rcv(vport_from_priv(lisp_port), skb);
+       ovs_skb_postpush_rcsum(skb, skb->data, ETH_HLEN);
+
+       ovs_tnl_rcv(vport_from_priv(lisp_port), skb, &tun_key);
        goto out;
 
 error:
@@ -378,6 +379,7 @@ static int lisp_tnl_send(struct vport *vport, struct sk_buff *skb)
                                LISP_HLEN, lisp_build_header);
                return tnl_len > 0 ? tnl_len + network_offset : tnl_len;
        default:
+               kfree_skb(skb);
                return 0;
        }
 }
@@ -390,7 +392,6 @@ static const char *lisp_get_name(const struct vport *vport)
 
 const struct vport_ops ovs_lisp_vport_ops = {
        .type           = OVS_VPORT_TYPE_LISP,
-       .flags          = VPORT_F_TUN_ID,
        .create         = lisp_tnl_create,
        .destroy        = lisp_tnl_destroy,
        .get_name       = lisp_get_name,