As mentioned, it'll be better and easier to have as much as possible of the arch dependent code in this module.
Signed-off-by: Lucas Meneghel Rodrigues <[email protected]> --- virttest/arch.py | 36 +++++++++++++++++++++++++++ virttest/utils_net.py | 68 ++++++++++++--------------------------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/virttest/arch.py b/virttest/arch.py index d420273..5bfbbcb 100644 --- a/virttest/arch.py +++ b/virttest/arch.py @@ -3,6 +3,42 @@ from virttest import utils_misc ARCH = platform.machine() +if ARCH == "ppc64": + # From include/linux/sockios.h + SIOCSIFHWADDR = 0x8924 + SIOCGIFHWADDR = 0x8927 + SIOCSIFFLAGS = 0x8914 + SIOCGIFINDEX = 0x8933 + SIOCBRADDIF = 0x89a2 + SIOCBRDELIF = 0x89a3 + # From linux/include/linux/if_tun.h + TUNSETIFF = 0x800454ca + TUNGETIFF = 0x400454d2 + TUNGETFEATURES = 0x400454cf + IFF_TAP = 0x2 + IFF_NO_PI = 0x1000 + IFF_VNET_HDR = 0x4000 + # From linux/include/linux/if.h + IFF_UP = 0x1 +else: + # From include/linux/sockios.h + SIOCSIFHWADDR = 0x8924 + SIOCGIFHWADDR = 0x8927 + SIOCSIFFLAGS = 0x8914 + SIOCGIFINDEX = 0x8933 + SIOCBRADDIF = 0x89a2 + SIOCBRDELIF = 0x89a3 + # From linux/include/linux/if_tun.h + TUNSETIFF = 0x400454ca + TUNGETIFF = 0x800454d2 + TUNGETFEATURES = 0x800454cf + IFF_TAP = 0x0002 + IFF_NO_PI = 0x1000 + IFF_VNET_HDR = 0x4000 + # From linux/include/linux/if.h + IFF_UP = 0x1 + + def get_kvm_module_list(): if ARCH == 'x86_64': return ["kvm", "kvm-%s" % utils_misc.get_cpu_vendor(verbose=False)] diff --git a/virttest/utils_net.py b/virttest/utils_net.py index 49dbe10..56a462d 100644 --- a/virttest/utils_net.py +++ b/virttest/utils_net.py @@ -1,45 +1,9 @@ -import platform, openvswitch, re, os, socket, fcntl, struct, logging, random +import openvswitch, re, os, socket, fcntl, struct, logging, random import shelve, commands from autotest.client import utils from autotest.client.shared import error -import propcan, utils_misc - - -ARCH = platform.machine() -if ARCH == "ppc64": - # From include/linux/sockios.h - SIOCSIFHWADDR = 0x8924 - SIOCGIFHWADDR = 0x8927 - SIOCSIFFLAGS = 0x8914 - SIOCGIFINDEX = 0x8933 - SIOCBRADDIF = 0x89a2 - SIOCBRDELIF = 0x89a3 - # From linux/include/linux/if_tun.h - TUNSETIFF = 0x800454ca - TUNGETIFF = 0x400454d2 - TUNGETFEATURES = 0x400454cf - IFF_TAP = 0x2 - IFF_NO_PI = 0x1000 - IFF_VNET_HDR = 0x4000 - # From linux/include/linux/if.h - IFF_UP = 0x1 -else: - # From include/linux/sockios.h - SIOCSIFHWADDR = 0x8924 - SIOCGIFHWADDR = 0x8927 - SIOCSIFFLAGS = 0x8914 - SIOCGIFINDEX = 0x8933 - SIOCBRADDIF = 0x89a2 - SIOCBRDELIF = 0x89a3 - # From linux/include/linux/if_tun.h - TUNSETIFF = 0x400454ca - TUNGETIFF = 0x800454d2 - TUNGETFEATURES = 0x800454cf - IFF_TAP = 0x0002 - IFF_NO_PI = 0x1000 - IFF_VNET_HDR = 0x4000 - # From linux/include/linux/if.h - IFF_UP = 0x1 +import propcan, utils_misc, arch + class NetError(Exception): pass @@ -283,7 +247,7 @@ class Bridge(object): @param brname: Name of the bridge """ try: - self._br_ioctl(SIOCBRADDIF, brname, ifname) + self._br_ioctl(arch.SIOCBRADDIF, brname, ifname) except IOError, details: raise BRAddIfError(ifname, brname, details) @@ -296,7 +260,7 @@ class Bridge(object): @param brname: Name of the bridge """ try: - self._br_ioctl(SIOCBRDELIF, brname, ifname) + self._br_ioctl(arch.SIOCBRDELIF, brname, ifname) except IOError, details: raise BRDelIfError(ifname, brname, details) @@ -335,7 +299,7 @@ def if_nametoindex(ifname): """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) ifr = struct.pack("16si", ifname, 0) - r = fcntl.ioctl(ctrl_sock, SIOCGIFINDEX, ifr) + r = fcntl.ioctl(ctrl_sock, arch.SIOCGIFINDEX, ifr) index = struct.unpack("16si", r)[1] ctrl_sock.close() return index @@ -349,12 +313,12 @@ def vnet_hdr_probe(tapfd): """ u = struct.pack("I", 0) try: - r = fcntl.ioctl(tapfd, TUNGETFEATURES, u) + r = fcntl.ioctl(tapfd, arch.TUNGETFEATURES, u) except OverflowError: logging.debug("Fail to get tun features!") return False flags = struct.unpack("I", r)[0] - if flags & IFF_VNET_HDR: + if flags & arch.IFF_VNET_HDR: return True else: return False @@ -372,13 +336,13 @@ def open_tap(devname, ifname, vnet_hdr=True): tapfd = os.open(devname, os.O_RDWR) except OSError, e: raise TAPModuleError(devname, "open", e) - flags = IFF_TAP | IFF_NO_PI + flags = arch.IFF_TAP | arch.IFF_NO_PI if vnet_hdr and vnet_hdr_probe(tapfd): - flags |= IFF_VNET_HDR + flags |= arch.IFF_VNET_HDR ifr = struct.pack("16sh", ifname, flags) try: - r = fcntl.ioctl(tapfd, TUNSETIFF, ifr) + r = fcntl.ioctl(tapfd, arch.TUNSETIFF, ifr) except IOError, details: raise TAPCreationError(ifname, details) ifname = struct.unpack("16sh", r)[0].strip("\x00") @@ -664,9 +628,9 @@ def bring_up_ifname(ifname): @param ifname: Name of the interface """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) - ifr = struct.pack("16sh", ifname, IFF_UP) + ifr = struct.pack("16sh", ifname, arch.IFF_UP) try: - fcntl.ioctl(ctrl_sock, SIOCSIFFLAGS, ifr) + fcntl.ioctl(ctrl_sock, arch.SIOCSIFFLAGS, ifr) except IOError: raise TAPBringUpError(ifname) ctrl_sock.close() @@ -681,7 +645,7 @@ def bring_down_ifname(ifname): ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) ifr = struct.pack("16sh", ifname, 0) try: - fcntl.ioctl(ctrl_sock, SIOCSIFFLAGS, ifr) + fcntl.ioctl(ctrl_sock, arch.SIOCSIFFLAGS, ifr) except IOError: raise TAPBringUpError(ifname) ctrl_sock.close() @@ -698,7 +662,7 @@ def if_set_macaddress(ifname, mac): ifr = struct.pack("256s", ifname) try: - mac_dev = fcntl.ioctl(ctrl_sock, SIOCGIFHWADDR, ifr)[18:24] + mac_dev = fcntl.ioctl(ctrl_sock, arch.SIOCGIFHWADDR, ifr)[18:24] mac_dev = ":".join(["%02x" % ord(m) for m in mac_dev]) except IOError, e: raise HwAddrGetError(ifname) @@ -709,7 +673,7 @@ def if_set_macaddress(ifname, mac): ifr = struct.pack("16sH14s", ifname, 1, "".join([chr(int(m, 16)) for m in mac.split(":")])) try: - fcntl.ioctl(ctrl_sock, SIOCSIFHWADDR, ifr) + fcntl.ioctl(ctrl_sock, arch.SIOCSIFHWADDR, ifr) except IOError, e: logging.info(e) raise HwAddrSetError(ifname, mac) -- 1.8.2 _______________________________________________ Virt-test-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/virt-test-devel
