xref: /openbsd/regress/sys/net/pf_opts/icmp6_dst.py (revision d415bd75)
1#!/usr/local/bin/python3
2
3print("send icmp6 with destination options header")
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_dst.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
21payload=b"ABCDEFGHIJKLMNOP"
22packet=IPv6(src=ADDR6, dst=ADDR6)/ \
23    IPv6ExtHdrDestOpt()/ \
24    ICMPv6Unknown(type=6, code=0, msgbody=payload)
25
26# send does not work for some reason, add the bpf loopback layer manually
27#send(packet)
28bpf=pack('!I', 24) + bytes(packet)
29sendp(bpf, iface=IF)
30