On 11/1/2019 9:07 AM, Greg Rose wrote:
This reverts commit 42a059e02bf343787951be2824c579e1c9a26e12.

Not all the necessary ipgre prefixed code was removed that
should have been.  Another patch will follow with the correct
removed code.

Signed-off-by: Greg Rose <gvrose8...@gmail.com>
---

Maintainers, please apply this revert patch to fix the Travis builds.  Patch passes Travis here:

https://travis-ci.org/gvrose8192/ovs-experimental/builds/606080092

Thanks,

- Greg

  datapath/linux/compat/ip_gre.c | 38 ++++++++++++++++++++++++++++++++++++++
  1 file changed, 38 insertions(+)

diff --git a/datapath/linux/compat/ip_gre.c b/datapath/linux/compat/ip_gre.c
index 8536241..3b7e607 100644
--- a/datapath/linux/compat/ip_gre.c
+++ b/datapath/linux/compat/ip_gre.c
@@ -922,6 +922,44 @@ static int erspan_tunnel_init(struct net_device *dev)
        return ip_tunnel_init(dev);
  }
+static int ipgre_header(struct sk_buff *skb, struct net_device *dev,
+                       unsigned short type,
+                       const void *daddr, const void *saddr, unsigned int len)
+{
+       struct ip_tunnel *t = netdev_priv(dev);
+       struct iphdr *iph;
+       struct gre_base_hdr *greh;
+
+       iph = (struct iphdr *)__skb_push(skb, t->hlen + sizeof(*iph));
+       greh = (struct gre_base_hdr *)(iph+1);
+       greh->flags = gre_tnl_flags_to_gre_flags(t->parms.o_flags);
+       greh->protocol = htons(type);
+
+       memcpy(iph, &t->parms.iph, sizeof(struct iphdr));
+
+       /* Set the source hardware address. */
+       if (saddr)
+               memcpy(&iph->saddr, saddr, 4);
+       if (daddr)
+               memcpy(&iph->daddr, daddr, 4);
+       if (iph->daddr)
+               return t->hlen + sizeof(*iph);
+
+       return -(t->hlen + sizeof(*iph));
+}
+
+static int ipgre_header_parse(const struct sk_buff *skb, unsigned char *haddr)
+{
+       const struct iphdr *iph = (const struct iphdr *) skb_mac_header(skb);
+       memcpy(haddr, &iph->saddr, 4);
+       return 4;
+}
+
+static const struct header_ops ipgre_header_ops = {
+       .create = ipgre_header,
+       .parse  = ipgre_header_parse,
+};
+
  static int ipgre_tunnel_init(struct net_device *dev)
  {
        struct ip_tunnel *tunnel = netdev_priv(dev);

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to