xref: /freebsd/tests/sys/netpfil/pf/fragcommon.py (revision d39d5ee2d67f61abc890b51973b5c4a0c81d6647)
1*d39d5ee2SKristof Provost#!/usr/bin/env python3
2*d39d5ee2SKristof Provost#
3*d39d5ee2SKristof Provost# SPDX-License-Identifier: BSD-2-Clause
4*d39d5ee2SKristof Provost#
5*d39d5ee2SKristof Provost# Copyright (c) 2021 Rubicon Communications, LLC (Netgate). All Rights Reserved.
6*d39d5ee2SKristof Provost#
7*d39d5ee2SKristof Provost# Redistribution and use in source and binary forms, with or without
8*d39d5ee2SKristof Provost# modification, are permitted provided that the following conditions
9*d39d5ee2SKristof Provost# are met:
10*d39d5ee2SKristof Provost# 1. Redistributions of source code must retain the above copyright
11*d39d5ee2SKristof Provost#    notice, this list of conditions and the following disclaimer.
12*d39d5ee2SKristof Provost# 2. Redistributions in binary form must reproduce the above copyright
13*d39d5ee2SKristof Provost#    notice, this list of conditions and the following disclaimer in the
14*d39d5ee2SKristof Provost#    documentation and/or other materials provided with the distribution.
15*d39d5ee2SKristof Provost#
16*d39d5ee2SKristof Provost# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17*d39d5ee2SKristof Provost# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*d39d5ee2SKristof Provost# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*d39d5ee2SKristof Provost# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20*d39d5ee2SKristof Provost# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*d39d5ee2SKristof Provost# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*d39d5ee2SKristof Provost# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*d39d5ee2SKristof Provost# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*d39d5ee2SKristof Provost# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*d39d5ee2SKristof Provost# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*d39d5ee2SKristof Provost# SUCH DAMAGE.
27*d39d5ee2SKristof Provost
28*d39d5ee2SKristof Provostimport argparse
29*d39d5ee2SKristof Provostimport os
30*d39d5ee2SKristof Provostimport scapy.all as sp
31*d39d5ee2SKristof Provostimport sys
32*d39d5ee2SKristof Provostimport time
33*d39d5ee2SKristof Provost
34*d39d5ee2SKristof Provostdef main(send):
35*d39d5ee2SKristof Provost	parser = argparse.ArgumentParser("frag-overindex.py",
36*d39d5ee2SKristof Provost		description="Fragmentation test tool")
37*d39d5ee2SKristof Provost	parser.add_argument('--to', nargs=1,
38*d39d5ee2SKristof Provost		required=True,
39*d39d5ee2SKristof Provost		help='The address to send the fragmented packets to')
40*d39d5ee2SKristof Provost	parser.add_argument('--fromaddr', nargs=1,
41*d39d5ee2SKristof Provost		required=True,
42*d39d5ee2SKristof Provost		help='The source address for the generated packets')
43*d39d5ee2SKristof Provost	parser.add_argument('--sendif', nargs=1,
44*d39d5ee2SKristof Provost		required=True,
45*d39d5ee2SKristof Provost		help='The interface through which the packet(s) will be sent')
46*d39d5ee2SKristof Provost	parser.add_argument('--recvif', nargs=1,
47*d39d5ee2SKristof Provost		required=True,
48*d39d5ee2SKristof Provost		help='The interface to expect the reply on')
49*d39d5ee2SKristof Provost
50*d39d5ee2SKristof Provost	args = parser.parse_args()
51*d39d5ee2SKristof Provost
52*d39d5ee2SKristof Provost	send(args.fromaddr[0], args.to[0], args.sendif[0], args.recvif[0])
53