CC: Lori Jakab <loja...@cisco.com>
Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
---
 datapath/vport-lisp.c |   48 ++----------------------------------------------
 1 files changed, 2 insertions(+), 46 deletions(-)

diff --git a/datapath/vport-lisp.c b/datapath/vport-lisp.c
index 6e37b2f..847cb39 100644
--- a/datapath/vport-lisp.c
+++ b/datapath/vport-lisp.c
@@ -206,48 +206,6 @@ static void lisp_build_header(const struct vport *vport,
        lisph->u2.word2.locator_status_bits = 1;
 }
 
-/**
- *     ovs_tnl_rcv - ingress point for generic tunnel code
- *
- * @vport: port this packet was received on
- * @skb: received packet
- * @tos: ToS from encapsulating IP packet, used to copy ECN bits
- *
- * Must be called with rcu_read_lock.
- *
- * Packets received by this function are in the following state:
- * - skb->data points to the inner Ethernet header.
- * - The inner Ethernet header is in the linear data area.
- * - skb->csum does not include the inner Ethernet header.
- * - The layer pointers are undefined.
- */
-static void ovs_tnl_rcv(struct vport *vport, struct sk_buff *skb,
-                       struct ovs_key_ipv4_tunnel *tun_key)
-{
-       struct ethhdr *eh;
-
-       skb_reset_mac_header(skb);
-       eh = eth_hdr(skb);
-
-       if (likely(ntohs(eh->h_proto) >= ETH_P_802_3_MIN))
-               skb->protocol = eh->h_proto;
-       else
-               skb->protocol = htons(ETH_P_802_2);
-
-       skb_dst_drop(skb);
-       nf_reset(skb);
-       skb_clear_rxhash(skb);
-       secpath_reset(skb);
-       vlan_set_tci(skb, 0);
-
-       if (unlikely(compute_ip_summed(skb, false))) {
-               kfree_skb(skb);
-               return;
-       }
-
-       ovs_vport_receive(vport, skb, tun_key);
-}
-
 /* Called with rcu_read_lock and BH disabled. */
 static int lisp_rcv(struct sock *sk, struct sk_buff *skb)
 {
@@ -263,13 +221,11 @@ static int lisp_rcv(struct sock *sk, struct sk_buff *skb)
        if (unlikely(!lisp_port))
                goto error;
 
-       if (unlikely(!pskb_may_pull(skb, LISP_HLEN)))
+       if (iptunnel_pull_header(skb, LISP_HLEN, htons(ETH_P_TEB)))
                goto error;
 
        lisph = lisp_hdr(skb);
 
-       skb_pull_rcsum(skb, LISP_HLEN);
-
        if (lisph->instance_id_present != 1)
                key = 0;
        else
@@ -301,7 +257,7 @@ static int lisp_rcv(struct sock *sk, struct sk_buff *skb)
 
        ovs_skb_postpush_rcsum(skb, skb->data, ETH_HLEN);
 
-       ovs_tnl_rcv(vport_from_priv(lisp_port), skb, &tun_key);
+       ovs_vport_receive(vport_from_priv(lisp_port), skb, &tun_key);
        goto out;
 
 error:
-- 
1.7.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to