opnsense-src/tests/sys/netinet6/ra.py
Mark Johnston cb2657c962 netinet6 tests: Add a regression test for default router handling
This serves as a regression test for commit a48df53e4249.

Reviewed by:	bz, allanjude
MFC after:	2 weeks
Sponsored by:	Klara, Inc.
Sponsored by:	Bell Tower Integration
Differential Revision:	https://reviews.freebsd.org/D46136

(cherry picked from commit feda329622bc77ab64ae5f0bf852743f4a037616)
2024-08-08 19:11:34 +00:00

38 lines
1.2 KiB
Python

#-
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2024 Klara, Inc.
#
import argparse
import scapy.all as sp
import sys
#
# Emit a router advertisement with the specified prefix.
#
def main():
parser = argparse.ArgumentParser("ra.py",
description="Emits Router Advertisement packets")
parser.add_argument('--sendif', nargs=1, required=True,
help='The interface through which the packet will be sent')
parser.add_argument('--src', nargs=1, required=True,
help='The source IP address')
parser.add_argument('--dst', nargs=1, required=True,
help='The destination IP address')
parser.add_argument('--prefix', nargs=1, required=True,
help='The prefix to be advertised')
parser.add_argument('--prefixlen', nargs=1, required=True, type=int,
help='The prefix length to be advertised')
args = parser.parse_args()
pkt = sp.Ether() / \
sp.IPv6(src=args.src, dst=args.dst) / \
sp.ICMPv6ND_RA(chlim=64) / \
sp.ICMPv6NDOptPrefixInfo(prefix=args.prefix, prefixlen=args.prefixlen)
sp.sendp(pkt, iface=args.sendif[0], verbose=False)
sys.exit(0)
if __name__ == '__main__':
main()