|
@@ -280,9 +280,8 @@ int ip6_mc_input(struct sk_buff *skb)
|
|
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
|
|
|
|
|
/* Check for MLD */
|
|
|
- if (unlikely(opt->ra)) {
|
|
|
+ if (unlikely(opt->flags & IP6SKB_ROUTERALERT)) {
|
|
|
/* Check if this is a mld message */
|
|
|
- u8 *ptr = skb_network_header(skb) + opt->ra;
|
|
|
u8 nexthdr = hdr->nexthdr;
|
|
|
__be16 frag_off;
|
|
|
int offset;
|
|
@@ -290,7 +289,7 @@ int ip6_mc_input(struct sk_buff *skb)
|
|
|
/* Check if the value of Router Alert
|
|
|
* is for MLD (0x0000).
|
|
|
*/
|
|
|
- if ((ptr[2] | ptr[3]) == 0) {
|
|
|
+ if (opt->ra == htons(IPV6_OPT_ROUTERALERT_MLD)) {
|
|
|
deliver = false;
|
|
|
|
|
|
if (!ipv6_ext_hdr(nexthdr)) {
|