xref: /freebsd/tests/sys/netpfil/common/pft_rst.py (revision 4c84c69ba308b7758d07dc8845b13922ed667e02)
1*4c84c69bSKristof Provost#!/usr/bin/env python3
2*4c84c69bSKristof Provost#
3*4c84c69bSKristof Provost# SPDX-License-Identifier: BSD-2-Clause
4*4c84c69bSKristof Provost#
5*4c84c69bSKristof Provost# Copyright (c) 2023 Rubicon Communications, LLC (Netgate)
6*4c84c69bSKristof Provost#
7*4c84c69bSKristof Provost# Redistribution and use in source and binary forms, with or without
8*4c84c69bSKristof Provost# modification, are permitted provided that the following conditions
9*4c84c69bSKristof Provost# are met:
10*4c84c69bSKristof Provost# 1. Redistributions of source code must retain the above copyright
11*4c84c69bSKristof Provost#    notice, this list of conditions and the following disclaimer.
12*4c84c69bSKristof Provost# 2. Redistributions in binary form must reproduce the above copyright
13*4c84c69bSKristof Provost#    notice, this list of conditions and the following disclaimer in the
14*4c84c69bSKristof Provost#    documentation and/or other materials provided with the distribution.
15*4c84c69bSKristof Provost#
16*4c84c69bSKristof Provost# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17*4c84c69bSKristof Provost# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*4c84c69bSKristof Provost# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*4c84c69bSKristof Provost# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20*4c84c69bSKristof Provost# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*4c84c69bSKristof Provost# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*4c84c69bSKristof Provost# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*4c84c69bSKristof Provost# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*4c84c69bSKristof Provost# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*4c84c69bSKristof Provost# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*4c84c69bSKristof Provost# SUCH DAMAGE.
27*4c84c69bSKristof Provost#
28*4c84c69bSKristof Provost
29*4c84c69bSKristof Provostimport logging
30*4c84c69bSKristof Provostlogging.getLogger("scapy").setLevel(logging.CRITICAL)
31*4c84c69bSKristof Provostimport math
32*4c84c69bSKristof Provostimport scapy.all as sp
33*4c84c69bSKristof Provostimport sys
34*4c84c69bSKristof Provost
35*4c84c69bSKristof Provostdef send_rst(src_ip, src_port, dst_ip, dst_port):
36*4c84c69bSKristof Provost	sp.send(sp.IP(src=src_ip, dst=dst_ip) /
37*4c84c69bSKristof Provost	   sp.TCP(sport=src_port, dport=dst_port, seq=1, flags="R"))
38*4c84c69bSKristof Provost
39*4c84c69bSKristof Provostsend_rst(sys.argv[1], int(sys.argv[2]), sys.argv[3], int(sys.argv[4]))
40