Skip to content

Commit

Permalink
Merge pull request #296 from p-l-/fix-circular-imports
Browse files Browse the repository at this point in the history
Arch: move constant values to a new submodule
  • Loading branch information
guedou committed Sep 27, 2016
2 parents 3d02771 + d466c17 commit 8e08bee
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 34 deletions.
19 changes: 3 additions & 16 deletions scapy/arch/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
Operating system specific functionality.
"""

import socket

import sys,os,socket

from scapy.arch.consts import LINUX, OPENBSD, FREEBSD, NETBSD, DARWIN, \
SOLARIS, WINDOWS, BSD, X86_64, ARM_64, LOOPBACK_NAME
from scapy.error import *
import scapy.config
from scapy.pton_ntop import inet_pton
Expand Down Expand Up @@ -54,19 +55,6 @@ def get_if_hwaddr(iff):
raise Scapy_Exception("Unsupported address family (%i) for interface [%s]" % (addrfamily,iff))


LINUX = sys.platform.startswith("linux")
OPENBSD = sys.platform.startswith("openbsd")
FREEBSD = "freebsd" in sys.platform
NETBSD = sys.platform.startswith("netbsd")
DARWIN = sys.platform.startswith("darwin")
SOLARIS = sys.platform.startswith("sunos")
WINDOWS = sys.platform.startswith("win32")
BSD = DARWIN or FREEBSD or OPENBSD or NETBSD

X86_64 = not WINDOWS and (os.uname()[4] == 'x86_64')
ARM_64 = not WINDOWS and (os.uname()[4] == 'aarch64')


# Next step is to import following architecture specific functions:
# def get_if_raw_hwaddr(iff)
# def get_if_raw_addr(iff):
Expand All @@ -85,7 +73,6 @@ def get_if_hwaddr(iff):
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
Expand Down
10 changes: 0 additions & 10 deletions scapy/arch/bsd.py

This file was deleted.

26 changes: 26 additions & 0 deletions scapy/arch/consts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## This file is part of Scapy
## See http://www.secdev.org/projects/scapy for more informations
## Copyright (C) Philippe Biondi <phil@secdev.org>
## This program is published under a GPLv2 license

import os
from sys import platform

LINUX = platform.startswith("linux")
OPENBSD = platform.startswith("openbsd")
FREEBSD = "freebsd" in platform
NETBSD = platform.startswith("netbsd")
DARWIN = platform.startswith("darwin")
SOLARIS = platform.startswith("sunos")
WINDOWS = platform.startswith("win32")
BSD = DARWIN or FREEBSD or OPENBSD or NETBSD

if WINDOWS:
X86_64 = False
ARM_64 = False
else:
uname = os.uname()
X86_64 = uname[4] == 'x86_64'
ARM_64 = uname[4] == 'aarch64'

LOOPBACK_NAME = "lo" if LINUX else "lo0"
3 changes: 1 addition & 2 deletions scapy/arch/linux.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
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
Expand Down Expand Up @@ -81,8 +82,6 @@
# 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")
Expand Down
2 changes: 0 additions & 2 deletions scapy/arch/solaris.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,4 @@
import socket
socket.IPPROTO_GRE = 47

LOOPBACK_NAME="lo0"

from scapy.arch.unix import *
2 changes: 1 addition & 1 deletion scapy/arch/windows/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
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
Expand All @@ -38,7 +39,6 @@
from scapy.arch import pcapdnet
from scapy.arch.pcapdnet import *

LOOPBACK_NAME="lo0"
WINDOWS = True

def _exec_query_ps(cmd, fields):
Expand Down
4 changes: 3 additions & 1 deletion scapy/route.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""

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
Expand All @@ -26,6 +26,7 @@ def invalidate_cache(self):
self.cache = {}

def resync(self):
from scapy.arch import read_routes
self.invalidate_cache()
self.routes = read_routes()

Expand All @@ -40,6 +41,7 @@ def __repr__(self):
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:
Expand Down
4 changes: 2 additions & 2 deletions scapy/sendrecv.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import cPickle,os,sys,time,subprocess
import itertools
from select import select
from scapy.arch.consts import DARWIN, FREEBSD
from scapy.data import *
from scapy import arch
from scapy.config import conf
from scapy.packet import Gen
from scapy.utils import warning,get_temp_file,PcapReader,wrpcap
Expand Down Expand Up @@ -127,7 +127,7 @@ def sndrcv(pks, pkt, timeout = None, inter = 0, verbose=None, chainCC=0, retry=0
if remaintime <= 0:
break
r = None
if not isinstance(pks, StreamSocket) and (arch.FREEBSD or arch.DARWIN):
if not isinstance(pks, StreamSocket) and (FREEBSD or DARWIN):
inp, out, err = select(inmask,[],[], 0.05)
if len(inp) == 0 or pks in inp:
r = pks.nonblock_recv()
Expand Down

0 comments on commit 8e08bee

Please sign in to comment.