]> git.baikalelectronics.ru Git - kernel.git/commit
tc-testing: introduce scapyPlugin for basic traffic
authorLucas Bates <lucasb@mojatatu.com>
Tue, 9 Jul 2019 01:34:27 +0000 (21:34 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Jul 2019 21:07:20 +0000 (14:07 -0700)
commit931b5fc61b5f479e7f7cd32af94c5a467e7ba012
tree6e9297f14adc865b305b1f5a2eac348d7f4c2307
parent1a4a8a9ae1487d08165c76edb476a5d467fc9c39
tc-testing: introduce scapyPlugin for basic traffic

The scapyPlugin allows for simple traffic generation in tdc to
test various tc features. It was tested with scapy v2.4.2, but
should work with any successive version.

In order to use the plugin's functionality, scapy must be
installed. This can be done with:
   pip3 install scapy

or to install 2.4.2:
   pip3 install scapy==2.4.2

If the plugin is unable to import the scapy module, it will
terminate the tdc run.

The plugin makes use of a new key in the test case data, 'scapy'.
This block contains three other elements: 'iface', 'count', and
'packet':

        "scapy": {
            "iface": "$DEV0",
            "count": 1,
            "packet": "Ether(type=0x800)/IP(src='16.61.16.61')/ICMP()"
        },

* iface is the name of the device on the host machine from which
  the packet(s) will be sent. Values contained within tdc_config.py's
  NAMES dict can be used here - this is useful if paired with
  nsPlugin
* count is the number of copies of this packet to be sent
* packet is a string detailing the different layers of the packet
  to be sent. If a property isn't explicitly set, scapy will set
  default values for you.

Layers in the packet info are separated by slashes. For info about
common TCP and IP properties, see:
https://blogs.sans.org/pen-testing/files/2016/04/ScapyCheatSheet_v0.2.pdf

Caution is advised when running tests using the scapy functionality,
since the plugin blindly sends the packet as defined in the test case
data.

See creating-testcases/scapy-example.json for sample test cases;
the first test is intended to pass while the second is intended to
fail.

Signed-off-by: Lucas Bates <lucasb@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/tc-testing/creating-testcases/scapy-example.json [new file with mode: 0644]
tools/testing/selftests/tc-testing/plugin-lib/scapyPlugin.py [new file with mode: 0644]