DPDK patches and discussions
 help / color / mirror / Atom feed
From: Luca Vizzarro <luca.vizzarro@arm.com>
To: dev@dpdk.org
Cc: Luca Vizzarro <luca.vizzarro@arm.com>,
	Paul Szczepanek <paul.szczepanek@arm.com>,
	Patrick Robb <probb@iol.unh.edu>
Subject: [PATCH] dts: add ICMP to packet filter config
Date: Tue, 15 Apr 2025 10:48:49 +0100	[thread overview]
Message-ID: <20250415094923.487014-1-luca.vizzarro@arm.com> (raw)

NICs like the Intel E810-C often produce ICMP packets. These packets
are stray and can interfere with testing. Therefore, add an ICMP
filtering option in the packet filter.

Moreover, use Scapy constants for the header values.

Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
---
Hi there,

sending in a new simple patch to introduce a new packet filter.

Best,
Luca
---
 .../capturing_traffic_generator.py            |  2 ++
 .../testbed_model/traffic_generator/scapy.py  | 20 +++++++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
index e31ba2a9b7..61e5033f0b 100644
--- a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
+++ b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
@@ -34,10 +34,12 @@ class PacketFilteringConfig:
     Attributes:
         no_lldp: If :data:`True`, LLDP packets will be filtered out when capturing.
         no_arp: If :data:`True`, ARP packets will be filtered out when capturing.
+        no_icmp: If :data:`True`, ICMP packets will be filtered out when capturing.
     """
 
     no_lldp: bool = True
     no_arp: bool = True
+    no_icmp: bool = True
 
 
 class CapturingTrafficGenerator(TrafficGenerator):
diff --git a/dts/framework/testbed_model/traffic_generator/scapy.py b/dts/framework/testbed_model/traffic_generator/scapy.py
index 09adcafcd8..57d79aa3d4 100644
--- a/dts/framework/testbed_model/traffic_generator/scapy.py
+++ b/dts/framework/testbed_model/traffic_generator/scapy.py
@@ -19,6 +19,9 @@
 from typing import ClassVar
 
 from scapy.compat import base64_bytes
+from scapy.data import ETHER_TYPES, IP_PROTOS
+from scapy.layers.inet import IP
+from scapy.layers.inet6 import IPv6
 from scapy.layers.l2 import Ether
 from scapy.packet import Packet
 
@@ -234,10 +237,23 @@ def _set_packet_filter(self, filter_config: PacketFilteringConfig):
 
         def _filter(packet: Packet) -> bool:
             if ether := packet.getlayer(Ether):
-                if filter_config.no_arp and ether.type == 0x0806:
+                if filter_config.no_arp and ether.type == ETHER_TYPES.ARP:
                     return False
 
-                if filter_config.no_lldp and ether.type == 0x88CC:
+                if filter_config.no_lldp and ether.type == ETHER_TYPES.LLDP:
+                    return False
+
+            if ipv4 := packet.getlayer(IP):
+                if filter_config.no_icmp and ipv4.proto == IP_PROTOS.icmp:
+                    return False
+
+            if ipv6 := packet.getlayer(IPv6):
+                next_header = ipv6.nh
+
+                if next_header == IP_PROTOS.hopopt:
+                    next_header = ipv6.payload.nh
+
+                if filter_config.no_icmp and next_header == IP_PROTOS.ipv6_icmp:
                     return False
 
             return True
-- 
2.43.0


             reply	other threads:[~2025-04-15  9:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-15  9:48 Luca Vizzarro [this message]
2025-04-17 12:46 ` Patrick Robb

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250415094923.487014-1-luca.vizzarro@arm.com \
    --to=luca.vizzarro@arm.com \
    --cc=dev@dpdk.org \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).