kernel: bump 4.9 to 4.9.123
[openwrt/openwrt.git] / target / linux / generic / pending-4.9 / 666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index b922be6f3d4d2e47b44b53d88e949c0ea1be942b..38c2ae647f9d47b59b4bba8515bac4a5b3efaa96 100644 (file)
@@ -268,7 +268,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        skb_reset_network_header(skb);
        memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
  
-+      if (tpi->proto == htons(ETH_P_IP) &&
++      if (tpi->proto == htons(ETH_P_IP) && tunnel->parms.fmrs &&
 +              !ipv6_addr_equal(&ipv6h->saddr, &tunnel->parms.raddr)) {
 +                      /* Packet didn't come from BR, so lookup FMR */
 +                      struct __ip6_tnl_fmr *fmr;
@@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1298,6 +1438,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1294,6 +1434,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  {
        struct ip6_tnl *t = netdev_priv(dev);
        struct ipv6hdr *ipv6h = ipv6_hdr(skb);
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        int encap_limit = -1;
        __u16 offset;
        struct flowi6 fl6;
-@@ -1356,6 +1497,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1352,6 +1493,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
                        fl6.flowi6_mark = skb->mark;
        }
  
@@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
                return -1;
  
-@@ -1483,6 +1636,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1479,6 +1632,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
        t->parms.flowinfo = p->flowinfo;
        t->parms.link = p->link;
        t->parms.proto = p->proto;
@@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        dst_cache_reset(&t->dst_cache);
        ip6_tnl_link_config(t);
        return 0;
-@@ -1521,6 +1682,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1517,6 +1678,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
        p->flowinfo = u->flowinfo;
        p->link = u->link;
        p->proto = u->proto;
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1898,6 +2060,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1894,6 +2056,15 @@ static int ip6_tnl_validate(struct nlatt
        return 0;
  }
  
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
                                  struct __ip6_tnl_parm *parms)
  {
-@@ -1932,6 +2103,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1928,6 +2099,46 @@ static void ip6_tnl_netlink_parms(struct
  
        if (data[IFLA_IPTUN_COLLECT_METADATA])
                parms->collect_md = true;