From d466c17729b666a8d9006b82e1e714efb2fdca9d Mon Sep 17 00:00:00 2001 From: Pierre LALET Date: Mon, 26 Sep 2016 20:24:23 +0200 Subject: [PATCH] Arch: factor LOOPBACK_NAME const This avoids a circular import problem affecting Windows platforms. --- scapy/arch/__init__.py | 3 +-- scapy/arch/bsd.py | 10 ---------- scapy/arch/consts.py | 2 ++ scapy/arch/linux.py | 3 +-- scapy/arch/solaris.py | 2 -- scapy/arch/windows/__init__.py | 2 +- scapy/route.py | 4 +++- 7 files changed, 8 insertions(+), 18 deletions(-) delete mode 100644 scapy/arch/bsd.py diff --git a/scapy/arch/__init__.py b/scapy/arch/__init__.py index f8687512f..92a714174 100644 --- a/scapy/arch/__init__.py +++ b/scapy/arch/__init__.py @@ -10,7 +10,7 @@ Operating system specific functionality. import socket from scapy.arch.consts import LINUX, OPENBSD, FREEBSD, NETBSD, DARWIN, \ - SOLARIS, WINDOWS, BSD, X86_64, ARM_64 + SOLARIS, WINDOWS, BSD, X86_64, ARM_64, LOOPBACK_NAME from scapy.error import * import scapy.config from scapy.pton_ntop import inet_pton @@ -73,7 +73,6 @@ if LINUX: if scapy.config.conf.use_pcap or scapy.config.conf.use_dnet: from scapy.arch.pcapdnet import * elif BSD: - from scapy.arch.bsd import LOOPBACK_NAME from scapy.arch.unix import read_routes, read_routes6, in6_getifaddr scapy.config.conf.use_pcap = True scapy.config.conf.use_dnet = True diff --git a/scapy/arch/bsd.py b/scapy/arch/bsd.py deleted file mode 100644 index 937c5b07d..000000000 --- a/scapy/arch/bsd.py +++ /dev/null @@ -1,10 +0,0 @@ -## This file is part of Scapy -## See http://www.secdev.org/projects/scapy for more informations -## Copyright (C) Philippe Biondi -## This program is published under a GPLv2 license - -""" -Support for BSD-like operating systems such as FreeBSD, OpenBSD and Mac OS X. -""" - -LOOPBACK_NAME = "lo0" diff --git a/scapy/arch/consts.py b/scapy/arch/consts.py index f475f5b9b..581d09f03 100644 --- a/scapy/arch/consts.py +++ b/scapy/arch/consts.py @@ -22,3 +22,5 @@ else: uname = os.uname() X86_64 = uname[4] == 'x86_64' ARM_64 = uname[4] == 'aarch64' + +LOOPBACK_NAME = "lo" if LINUX else "lo0" diff --git a/scapy/arch/linux.py b/scapy/arch/linux.py index a9908bfc7..a5617f90d 100644 --- a/scapy/arch/linux.py +++ b/scapy/arch/linux.py @@ -12,6 +12,7 @@ import sys,os,struct,socket,time from select import select from fcntl import ioctl +from scapy.arch.consts import LOOPBACK_NAME import scapy.utils import scapy.utils6 from scapy.packet import Packet, Padding @@ -81,8 +82,6 @@ PACKET_FASTROUTE = 6 # Fastrouted frame # Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space -LOOPBACK_NAME="lo" - with os.popen("%s -V 2> /dev/null" % conf.prog.tcpdump) as _f: if _f.close() >> 8 == 0x7f: log_loading.warning("Failed to execute tcpdump. Check it is installed and in the PATH") diff --git a/scapy/arch/solaris.py b/scapy/arch/solaris.py index 13d23497a..5b997b80d 100644 --- a/scapy/arch/solaris.py +++ b/scapy/arch/solaris.py @@ -11,6 +11,4 @@ Customization for the Solaris operation system. import socket socket.IPPROTO_GRE = 47 -LOOPBACK_NAME="lo0" - from scapy.arch.unix import * diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py index 9a4142d8b..eec790302 100755 --- a/scapy/arch/windows/__init__.py +++ b/scapy/arch/windows/__init__.py @@ -13,6 +13,7 @@ import subprocess as sp from glob import glob import tempfile +from scapy.arch.consts import LOOPBACK_NAME from scapy.config import conf,ConfClass from scapy.error import Scapy_Exception,log_loading,log_runtime from scapy.utils import atol, itom, inet_aton, inet_ntoa, PcapReader @@ -38,7 +39,6 @@ if not hasattr(socket, 'IPPROTO_ESP'): from scapy.arch import pcapdnet from scapy.arch.pcapdnet import * -LOOPBACK_NAME="lo0" WINDOWS = True def _exec_query_ps(cmd, fields): diff --git a/scapy/route.py b/scapy/route.py index 7140a49bd..0da8958f7 100644 --- a/scapy/route.py +++ b/scapy/route.py @@ -8,7 +8,7 @@ Routing and handling of network interfaces. """ import socket -from scapy.arch import read_routes,get_if_addr,LOOPBACK_NAME +from scapy.arch.consts import LOOPBACK_NAME from scapy.utils import atol,ltoa,itom from scapy.config import conf from scapy.error import Scapy_Exception,warning @@ -26,6 +26,7 @@ class Route: self.cache = {} def resync(self): + from scapy.arch import read_routes self.invalidate_cache() self.routes = read_routes() @@ -40,6 +41,7 @@ class Route: return rt def make_route(self, host=None, net=None, gw=None, dev=None): + from scapy.arch import get_if_addr if host is not None: thenet,msk = host,32 elif net is not None: