1#!/usr/local/bin/python3
2
3print("send icmp6 multicast listener discovery with router alert")
4
5import os
6import sys
7from struct import pack
8from addr import *
9from scapy.all import *
10
11if len(sys.argv) != 2:
12	print("usage: icmp6_mld_ra.py Nn")
13	exit(2)
14
15N=sys.argv[1]
16IF=eval("IF_"+N);
17ADDR6=eval("ADDR6_"+N);
18
19pid=os.getpid()
20eid=pid & 0xffff
21packet=IPv6(src=ADDR6, dst="ff02::1", hlim=1)/ \
22    IPv6ExtHdrHopByHop(options=RouterAlert())/ \
23    ICMPv6MLQuery()
24
25# send does not work for some reason, add the bpf loopback layer manually
26#send(packet)
27bpf=pack('!I', 24) + bytes(packet)
28sendp(bpf, iface=IF)
29