Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import signal
|
|
from string import Template
|
|
import subprocess
|
|
import time
|
|
from TdcPlugin import TdcPlugin
|
|
|
|
from tdc_config import *
|
|
|
|
try:
|
|
from scapy.all import *
|
|
except ImportError:
|
|
print("Unable to import the scapy python module.")
|
|
print("\nIf not already installed, you may do so with:")
|
|
print("\t\tpip3 install scapy==2.4.2")
|
|
exit(1)
|
|
|
|
class SubPlugin(TdcPlugin):
|
|
def __init__(self):
|
|
self.sub_class = 'scapy/SubPlugin'
|
|
super().__init__()
|
|
|
|
def post_execute(self):
|
|
if 'scapy' not in self.args.caseinfo:
|
|
if self.args.verbose:
|
|
print('{}.post_execute: no scapy info in test case'.format(self.sub_class))
|
|
return
|
|
|
|
# Check for required fields
|
|
lscapyinfo = self.args.caseinfo['scapy']
|
|
if type(lscapyinfo) != list:
|
|
lscapyinfo = [ lscapyinfo, ]
|
|
|
|
for scapyinfo in lscapyinfo:
|
|
scapy_keys = ['iface', 'count', 'packet']
|
|
missing_keys = []
|
|
keyfail = False
|
|
for k in scapy_keys:
|
|
if k not in scapyinfo:
|
|
keyfail = True
|
|
missing_keys.append(k)
|
|
if keyfail:
|
|
print('{}: Scapy block present in the test, but is missing info:'
|
|
.format(self.sub_class))
|
|
print('{}'.format(missing_keys))
|
|
|
|
pkt = eval(scapyinfo['packet'])
|
|
if '$' in scapyinfo['iface']:
|
|
tpl = Template(scapyinfo['iface'])
|
|
scapyinfo['iface'] = tpl.safe_substitute(NAMES)
|
|
for count in range(scapyinfo['count']):
|
|
sendp(pkt, iface=scapyinfo['iface'])
|