tests/divert: use PF_DIVERT

Now all Python ports has been patched to support PF_DIVERT, and
Python kinda promises to add support in 3.12 [1].

This reverts commit 322b5b7c16666c40d2763f18c1a51e6f0580d4e9.

[1] https://github.com/python/cpython/pull/96536#issuecomment-1303974686
This commit is contained in:
Gleb Smirnoff 2022-12-26 11:10:15 -08:00
parent 829f0bcb5f
commit 5e4ae3061f

View File

@ -29,16 +29,13 @@
#
import socket
from socket import socket, PF_DIVERT, SOCK_RAW
import logging
logging.getLogger("scapy").setLevel(logging.CRITICAL)
import scapy.all as sc
import argparse
IPPROTO_DIVERT = 258
def parse_args():
parser = argparse.ArgumentParser(description='divert socket tester')
parser.add_argument('--dip', type=str, help='destination packet IP')
@ -52,14 +49,14 @@ def parse_args():
def ipdivert_ip_output_remote_success(args):
packet = sc.IP(dst=args.dip) / sc.ICMP(type='echo-request')
with socket.socket(socket.AF_INET, socket.SOCK_RAW, IPPROTO_DIVERT) as s:
with socket(PF_DIVERT, SOCK_RAW, 0) as s:
s.bind(('0.0.0.0', args.divert_port))
s.sendto(bytes(packet), ('0.0.0.0', 0))
def ipdivert_ip6_output_remote_success(args):
packet = sc.IPv6(dst=args.dip) / sc.ICMPv6EchoRequest()
with socket.socket(socket.AF_INET, socket.SOCK_RAW, IPPROTO_DIVERT) as s:
with socket(PF_DIVERT, SOCK_RAW, 0) as s:
s.bind(('0.0.0.0', args.divert_port))
s.sendto(bytes(packet), ('0.0.0.0', 0))
@ -67,7 +64,7 @@ def ipdivert_ip6_output_remote_success(args):
def ipdivert_ip_input_local_success(args):
"""Sends IPv4 packet to OS stack as inbound local packet."""
packet = sc.IP(dst=args.dip,src=args.sip) / sc.ICMP(type='echo-request')
with socket.socket(socket.AF_INET, socket.SOCK_RAW, IPPROTO_DIVERT) as s:
with socket(PF_DIVERT, SOCK_RAW, 0) as s:
s.bind(('0.0.0.0', args.divert_port))
s.sendto(bytes(packet), (args.dip, 0))