Mon, Oct 14, 2013 at 02:34:19PM CEST, olichtne@redhat.com wrote:
From: Ondrej Lichtner olichtne@redhat.com
The new version of pyroute2 has a new feature that was added partially on my request- the IPRSocket. This commit updates the code where we use pyroute2 to use this feature.
This feature is available from pyroute2 version 0.1.11 which already is available as a package in Fedora 19.
And how about RHEL6? Just curious if we're expecting workarounds. Does easy_install cover this? If so I'm ok with it.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com
lnst/Common/ConnectionHandler.py | 11 ++++------- lnst/Common/NetUtils.py | 11 +++-------- lnst/Slave/NetTestSlave.py | 25 +++---------------------- 3 files changed, 10 insertions(+), 37 deletions(-)
diff --git a/lnst/Common/ConnectionHandler.py b/lnst/Common/ConnectionHandler.py index b44f159..c0a43fa 100644 --- a/lnst/Common/ConnectionHandler.py +++ b/lnst/Common/ConnectionHandler.py @@ -15,8 +15,7 @@ import select import cPickle import socket from _multiprocessing import Connection -from pyroute2.netlink import NetlinkSocket -from pyroute2.netlink.iproute import MarshalRtnl +from pyroute2 import IPRSocket
def send_data(s, data): try: @@ -35,11 +34,9 @@ def send_data(s, data): return True
def recv_data(s):
- if isinstance(s, NetlinkSocket):
marshaller = MarshalRtnl()
msg = s.recv(16384)
decoded_msg = marshaller.parse(msg)
data = {"type": "netlink", "data": decoded_msg}
- if isinstance(s, IPRSocket):
msg = s.get()
elif isinstance(s, socket.SocketType): length = "" while True:data = {"type": "netlink", "data": msg}
diff --git a/lnst/Common/NetUtils.py b/lnst/Common/NetUtils.py index efa14f5..b649483 100644 --- a/lnst/Common/NetUtils.py +++ b/lnst/Common/NetUtils.py @@ -15,14 +15,11 @@ import os import re import socket import subprocess -from resource import getpagesize -from pyroute2.netlink import NetlinkSocket +from pyroute2 import IPRSocket from pyroute2.netlink import NLM_F_REQUEST from pyroute2.netlink import NLM_F_DUMP from pyroute2.netlink import NLMSG_DONE from pyroute2.netlink import NLMSG_ERROR -from pyroute2.netlink.generic import NETLINK_ROUTE -from pyroute2.netlink.iproute import MarshalRtnl from pyroute2.netlink.iproute import RTM_GETLINK from pyroute2.netlink.iproute import RTM_NEWLINK from pyroute2.netlink.rtnl.ifinfmsg import ifinfmsg @@ -32,7 +29,7 @@ def normalize_hwaddr(hwaddr):
def scan_netdevs(): scan = []
- nl_socket = NetlinkSocket(family=NETLINK_ROUTE)
- nl_socket = IPRSocket() msg = ifinfmsg() msg["family"] = socket.AF_UNSPEC msg["header"]["type"] = RTM_GETLINK
@@ -44,10 +41,8 @@ def scan_netdevs(): nl_socket.sendto(msg.buf.getvalue(), (0,0))
finished = False
- marshal = MarshalRtnl() while not finished:
response = nl_socket.recv(getpagesize())
parts = marshal.parse(response)
parts = nl_socket.get() for part in parts: if part["header"]["type"] in [NLMSG_DONE, NLMSG_ERROR]: finished = True
diff --git a/lnst/Slave/NetTestSlave.py b/lnst/Slave/NetTestSlave.py index 76359d5..f8dad2b 100644 --- a/lnst/Slave/NetTestSlave.py +++ b/lnst/Slave/NetTestSlave.py @@ -37,26 +37,7 @@ from lnst.Common.ConnectionHandler import recv_data, send_data from lnst.Common.ConnectionHandler import ConnectionHandler from lnst.Common.Config import lnst_config from lnst.Common.NetTestCommand import NetTestCommandConfig
-#TODO this is temporary, until python-pyroute2 package is updated -from pyroute2.netlink import NetlinkSocket -from pyroute2.netlink.generic import NETLINK_ROUTE
-RTNLGRP_LINK = 0x1 -RTNLGRP_NEIGH = 0x4 -RTNLGRP_TC = 0x8 -RTNLGRP_IPV4_IFADDR = 0x10 -RTNLGRP_IPV4_ROUTE = 0x40 -RTNLGRP_IPV6_IFADDR = 0x100 -RTNLGRP_IPV6_ROUTE = 0x400
-RTNL_GROUPS = RTNLGRP_IPV4_IFADDR |\
- RTNLGRP_IPV6_IFADDR |\
- RTNLGRP_IPV4_ROUTE |\
- RTNLGRP_IPV6_ROUTE |\
- RTNLGRP_NEIGH |\
- RTNLGRP_LINK |\
- RTNLGRP_TC
+from pyroute2 import IPRSocket
DefaultRPCPort = 9999
@@ -455,8 +436,8 @@ class NetTestSlave:
self._log_ctl = log_ctl
self._nl_socket = NetlinkSocket(family=NETLINK_ROUTE)
self._nl_socket.bind(RTNL_GROUPS)
self._nl_socket = IPRSocket()
self._nl_socket.bind() self._server_handler.add_connection('netlink', self._nl_socket)
def run(self):
-- 1.8.3.1
LNST-developers mailing list LNST-developers@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/lnst-developers