Skip to content

Commit 6baeb39

Browse files
MichelleJin12davem330
authored andcommitted
net: bridge: use mld2r_ngrec instead of icmpv6_dataun
br_ip6_multicast_mld2_report function uses icmp6h to parse mld2_report packet. mld2r_ngrec defines mld2r_hdr.icmp6_dataun.un_data16[1] in include/net/mld.h. So, it is more compact to use mld2r rather than icmp6h. By doing printk test, it is confirmed that icmp6h->icmp6_dataun.un_data16[1] and mld2r->mld2r_ngrec are indeed equivalent. Also, sizeof(*mld2r) and sizeof(*icmp6h) are equivalent, too. Signed-off-by: MichelleJin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 429205d commit 6baeb39

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

net/bridge/br_multicast.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,21 +2731,21 @@ static int br_ip6_multicast_mld2_report(struct net_bridge_mcast *brmctx,
27312731
struct net_bridge_mdb_entry *mdst;
27322732
struct net_bridge_port_group *pg;
27332733
unsigned int nsrcs_offset;
2734+
struct mld2_report *mld2r;
27342735
const unsigned char *src;
2735-
struct icmp6hdr *icmp6h;
27362736
struct in6_addr *h_addr;
27372737
struct mld2_grec *grec;
27382738
unsigned int grec_len;
27392739
bool changed = false;
27402740
int i, len, num;
27412741
int err = 0;
27422742

2743-
if (!ipv6_mc_may_pull(skb, sizeof(*icmp6h)))
2743+
if (!ipv6_mc_may_pull(skb, sizeof(*mld2r)))
27442744
return -EINVAL;
27452745

2746-
icmp6h = icmp6_hdr(skb);
2747-
num = ntohs(icmp6h->icmp6_dataun.un_data16[1]);
2748-
len = skb_transport_offset(skb) + sizeof(*icmp6h);
2746+
mld2r = (struct mld2_report *)icmp6_hdr(skb);
2747+
num = ntohs(mld2r->mld2r_ngrec);
2748+
len = skb_transport_offset(skb) + sizeof(*mld2r);
27492749

27502750
for (i = 0; i < num; i++) {
27512751
__be16 *_nsrcs, __nsrcs;

0 commit comments

Comments
 (0)