diff options
Diffstat (limited to 'target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch')
-rw-r--r-- | target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch b/target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch index 1d3ce28128..8fc5880041 100644 --- a/target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch +++ b/target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch @@ -246,14 +246,14 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> struct igmpv3_report *ih; struct igmpv3_grec *grec; int i; -@@ -1068,12 +1101,14 @@ static int br_ip4_multicast_igmp3_report +@@ -1070,12 +1103,14 @@ static int br_ip4_multicast_igmp3_report continue; } + src = eth_hdr(skb)->h_source; if ((type == IGMPV3_CHANGE_TO_INCLUDE || type == IGMPV3_MODE_IS_INCLUDE) && - ntohs(grec->grec_nsrcs) == 0) { + nsrcs == 0) { - br_ip4_multicast_leave_group(br, port, group, vid); + br_ip4_multicast_leave_group(br, port, group, vid, src); } else { @@ -263,7 +263,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> if (err) break; } -@@ -1088,6 +1123,7 @@ static int br_ip6_multicast_mld2_report( +@@ -1090,6 +1125,7 @@ static int br_ip6_multicast_mld2_report( struct sk_buff *skb, u16 vid) { @@ -271,9 +271,9 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> struct icmp6hdr *icmp6h; struct mld2_grec *grec; int i; -@@ -1139,10 +1175,11 @@ static int br_ip6_multicast_mld2_report( +@@ -1144,10 +1180,11 @@ static int br_ip6_multicast_mld2_report( grec->grec_type == MLD2_MODE_IS_INCLUDE) && - ntohs(*nsrcs) == 0) { + nsrcs == 0) { br_ip6_multicast_leave_group(br, port, &grec->grec_mca, - vid); + vid, src); @@ -285,7 +285,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> if (err) break; } -@@ -1458,7 +1495,8 @@ br_multicast_leave_group(struct net_brid +@@ -1462,7 +1499,8 @@ br_multicast_leave_group(struct net_brid struct net_bridge_port *port, struct br_ip *group, struct bridge_mcast_other_query *other_query, @@ -295,7 +295,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> { struct net_bridge_mdb_htable *mdb; struct net_bridge_mdb_entry *mp; -@@ -1482,7 +1520,7 @@ br_multicast_leave_group(struct net_brid +@@ -1486,7 +1524,7 @@ br_multicast_leave_group(struct net_brid for (pp = &mp->ports; (p = mlock_dereference(*pp, br)) != NULL; pp = &p->next) { @@ -304,7 +304,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> continue; rcu_assign_pointer(*pp, p->next); -@@ -1513,7 +1551,7 @@ br_multicast_leave_group(struct net_brid +@@ -1517,7 +1555,7 @@ br_multicast_leave_group(struct net_brid for (p = mlock_dereference(mp->ports, br); p != NULL; p = mlock_dereference(p->next, br)) { @@ -313,7 +313,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> continue; if (!hlist_unhashed(&p->mglist) && -@@ -1564,7 +1602,8 @@ out: +@@ -1568,7 +1606,8 @@ out: static void br_ip4_multicast_leave_group(struct net_bridge *br, struct net_bridge_port *port, __be32 group, @@ -323,7 +323,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1579,14 +1618,15 @@ static void br_ip4_multicast_leave_group +@@ -1583,14 +1622,15 @@ static void br_ip4_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query, @@ -341,7 +341,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1601,7 +1641,7 @@ static void br_ip6_multicast_leave_group +@@ -1605,7 +1645,7 @@ static void br_ip6_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query, @@ -350,7 +350,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> } #endif -@@ -1644,6 +1684,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1648,6 +1688,7 @@ static int br_multicast_ipv4_rcv(struct u16 vid) { struct sk_buff *skb_trimmed = NULL; @@ -358,7 +358,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> struct igmphdr *ih; int err; -@@ -1659,13 +1700,14 @@ static int br_multicast_ipv4_rcv(struct +@@ -1663,13 +1704,14 @@ static int br_multicast_ipv4_rcv(struct } ih = igmp_hdr(skb); @@ -374,7 +374,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> break; case IGMPV3_HOST_MEMBERSHIP_REPORT: err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid); -@@ -1674,7 +1716,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1678,7 +1720,7 @@ static int br_multicast_ipv4_rcv(struct err = br_ip4_multicast_query(br, port, skb_trimmed, vid); break; case IGMP_HOST_LEAVE_MESSAGE: @@ -383,7 +383,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> break; } -@@ -1694,6 +1736,7 @@ static int br_multicast_ipv6_rcv(struct +@@ -1698,6 +1740,7 @@ static int br_multicast_ipv6_rcv(struct u16 vid) { struct sk_buff *skb_trimmed = NULL; @@ -391,7 +391,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> struct mld_msg *mld; int err; -@@ -1713,8 +1756,10 @@ static int br_multicast_ipv6_rcv(struct +@@ -1717,8 +1760,10 @@ static int br_multicast_ipv6_rcv(struct switch (mld->mld_type) { case ICMPV6_MGM_REPORT: @@ -403,7 +403,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> break; case ICMPV6_MLD2_REPORT: err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid); -@@ -1723,7 +1768,8 @@ static int br_multicast_ipv6_rcv(struct +@@ -1727,7 +1772,8 @@ static int br_multicast_ipv6_rcv(struct err = br_ip6_multicast_query(br, port, skb_trimmed, vid); break; case ICMPV6_MGM_REDUCTION: |