Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[scapy] update scapy to 2.4.5 and patch it #10457

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@
[submodule "src/redis-dump-load"]
path = src/redis-dump-load
url = https://github.com/p/redis-dump-load.git
[submodule "src/scapy"]
path = src/scapy
url = https://github.com/secdev/scapy.git
[submodule "platform/mellanox/mlnx-sai/SAI-Implementation"]
path = platform/mellanox/mlnx-sai/SAI-Implementation
url = https://github.com/Mellanox/SAI-Implementation
Expand Down
9 changes: 8 additions & 1 deletion dockers/docker-orchagent/Dockerfile.j2
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ RUN ln -s -f /usr/bin/gcc-8 /usr/bin/aarch64-linux-gnu-gcc

# Dependencies of restore_neighbors.py
RUN pip3 install \
scapy==2.4.4 \
pyroute2==0.5.14 \
netifaces==0.10.9

Expand All @@ -57,6 +56,14 @@ RUN apt-get remove -y gcc-8
{{ install_debian_packages(docker_orchagent_debs.split(' ')) }}
{%- endif %}

{% if docker_orchagent_whls.strip() -%}
# Copy locally-built Python wheel dependencies
{{ copy_files("python-wheels/", docker_orchagent_whls.split(' '), "/python-wheels/") }}

# Install locally-built Python wheel dependencies
{{ install_python_wheels(docker_orchagent_whls.split(' ')) }}
{% endif %}

# Clean up
RUN apt-get purge -y \
build-essential \
Expand Down
1 change: 1 addition & 0 deletions rules/docker-orchagent.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ $(DOCKER_ORCHAGENT)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_DEPENDS)
$(DOCKER_ORCHAGENT)_DBG_DEPENDS += $(SWSS_DBG) \
$(LIBSWSSCOMMON_DBG) \
$(LIBSAIREDIS_DBG)
$(DOCKER_ORCHAGENT)_PYTHON_WHEELS += $(SCAPY)

$(DOCKER_ORCHAGENT)_DBG_IMAGE_PACKAGES = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_IMAGE_PACKAGES)

Expand Down
10 changes: 10 additions & 0 deletions rules/scapy.dep
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
SPATH := $($(SCAPY)_SRC_PATH)
DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/scapy.mk rules/scapy.dep
DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST)
SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files -- ':!:doc/*'))

$(SCAPY)_CACHE_MODE := GIT_CONTENT_SHA
$(SCAPY)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST)
$(SCAPY)_DEP_FILES := $(DEP_FILES)
$(SCAPY)_SMDEP_FILES := $(SMDEP_FILES)
$(SCAPY)_SMDEP_PATHS := $(SPATH)
7 changes: 7 additions & 0 deletions rules/scapy.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# scapy python3 wheel

SCAPY = scapy-2.4.5-py2.py3-none-any.whl
$(SCAPY)_SRC_PATH = $(SRC_PATH)/scapy
$(SCAPY)_PYTHON_VERSION = 3
$(SCAPY)_TEST = n
SONIC_PYTHON_WHEELS += $(SCAPY)
1 change: 1 addition & 0 deletions src/scapy
Submodule scapy added at 8b63d7
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
From 988c808af6065b740006aef0e94496821d41fb98 Mon Sep 17 00:00:00 2001
From: Stepan Blyschak <stepanb@nvidia.com>
Date: Mon, 4 Apr 2022 09:57:39 +0000
Subject: [PATCH] Fix version string generation when scapy is a submodule

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
---
scapy/__init__.py | 3 ---
1 file changed, 3 deletions(-)

diff --git a/scapy/__init__.py b/scapy/__init__.py
index f920151e..2adbea19 100644
--- a/scapy/__init__.py
+++ b/scapy/__init__.py
@@ -42,9 +42,6 @@ def _version_from_git_describe():
:raises CalledProcessError: if git is unavailable
:return: Scapy's latest tag
"""
- if not os.path.isdir(os.path.join(os.path.dirname(_SCAPY_PKG_DIR), '.git')): # noqa: E501
- raise ValueError('not in scapy git repo')
-
def _git(cmd):
# type: (str) -> str
process = subprocess.Popen(
--
2.14.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
From 7ffd8101c1e535f9c3225db2c319958a64412686 Mon Sep 17 00:00:00 2001
From: Guillaume Valadon <guillaume@valadon.net>
Date: Tue, 14 Sep 2021 19:34:43 +0200
Subject: [PATCH] Check if the network interface still exists

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
---
scapy/arch/linux.py | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/scapy/arch/linux.py b/scapy/arch/linux.py
index 94fac8f0..b86e98ab 100644
--- a/scapy/arch/linux.py
+++ b/scapy/arch/linux.py
@@ -414,13 +414,17 @@ class LinuxInterfaceProvider(InterfaceProvider):
data = {}
ips = in6_getifaddr()
for i in _get_if_list():
- ifflags = struct.unpack("16xH14x", get_if(i, SIOCGIFFLAGS))[0]
- index = get_if_index(i)
- mac = scapy.utils.str2mac(
- get_if_raw_hwaddr(i, siocgifhwaddr=SIOCGIFHWADDR)[1]
- )
- ip = None # type: Optional[str]
- ip = inet_ntop(socket.AF_INET, get_if_raw_addr(i))
+ try:
+ ifflags = struct.unpack("16xH14x", get_if(i, SIOCGIFFLAGS))[0]
+ index = get_if_index(i)
+ mac = scapy.utils.str2mac(
+ get_if_raw_hwaddr(i, siocgifhwaddr=SIOCGIFHWADDR)[1]
+ )
+ ip = None # type: Optional[str]
+ ip = inet_ntop(socket.AF_INET, get_if_raw_addr(i))
+ except IOError:
+ warning("Interface %s does not exist!", i)
+ continue
if ip == "0.0.0.0":
ip = None
ifflags = FlagValue(ifflags, _iff_flags)
--
2.14.1

2 changes: 2 additions & 0 deletions src/scapy.patch/series
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
0001-Fix-version-string-generation-when-scapy-is-a-submod.patch
0002-Check-if-the-network-interface-still-exists.patch