By default the stable secret is unset.
 
+drop_unicast_in_l2_multicast - BOOLEAN
+       Drop any unicast IPv6 packets that are received in link-layer
+       multicast (or broadcast) frames.
+
+       By default this is turned off.
+
 icmp/*:
 ratelimit - INTEGER
        Limit the maximal rates for sending ICMPv6 packets.
 
        __s32           mc_forwarding;
 #endif
        __s32           disable_ipv6;
+       __s32           drop_unicast_in_l2_multicast;
        __s32           accept_dad;
        __s32           force_tllao;
        __s32           ndisc_notify;
 
        DEVCONF_USE_OIF_ADDRS_ONLY,
        DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
        DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
+       DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
        DEVCONF_MAX
 };
 
 
        array[DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN] = cnf->ignore_routes_with_linkdown;
        /* we omit DEVCONF_STABLE_SECRET for now */
        array[DEVCONF_USE_OIF_ADDRS_ONLY] = cnf->use_oif_addrs_only;
+       array[DEVCONF_DROP_UNICAST_IN_L2_MULTICAST] = cnf->drop_unicast_in_l2_multicast;
 }
 
 static inline size_t inet6_ifla6_size(void)
                        .mode           = 0644,
                        .proc_handler   = addrconf_sysctl_ignore_routes_with_linkdown,
                },
+               {
+                       .procname       = "drop_unicast_in_l2_multicast",
+                       .data           = &ipv6_devconf.drop_unicast_in_l2_multicast,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
+               },
                {
                        /* sentinel */
                }
 
            IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 1)
                goto err;
 
+       /* If enabled, drop unicast packets that were encapsulated in link-layer
+        * multicast or broadcast to protected against the so-called "hole-196"
+        * attack in 802.11 wireless.
+        */
+       if (!ipv6_addr_is_multicast(&hdr->daddr) &&
+           (skb->pkt_type == PACKET_BROADCAST ||
+            skb->pkt_type == PACKET_MULTICAST) &&
+           idev->cnf.drop_unicast_in_l2_multicast)
+               goto err;
+
        /* RFC4291 2.7
         * Nodes must not originate a packet to a multicast address whose scope
         * field contains the reserved value 0; if such a packet is received, it