xref: /openbsd/regress/sys/net/pf_opts/icmp_ra.py (revision 473ed62e)
1#!/usr/local/bin/python3
2
3print("send icmp 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: icmp_ra.py Nn")
13	exit(2)
14
15N=sys.argv[1]
16IF=eval("IF_"+N);
17ADDR=eval("ADDR_"+N);
18
19pid=os.getpid()
20eid=pid & 0xffff
21payload=b"ABCDEFGHIJKLMNOP"
22packet=IP(src=ADDR, dst=ADDR, options=b"\001\224\004\000\000\001\000\001")/ \
23    ICMP(type=6, id=eid)/payload
24
25# send() does not work for some reason, add the bpf loopback layer manually
26bpf=pack('!I', 2) + bytes(packet)
27sendp(bpf, iface=IF)
28