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.
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() + data = {"type": "netlink", "data": msg} elif isinstance(s, socket.SocketType): length = "" while True: 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):
Typo in the subject... pyrout2 -> pyroute2. should I resend the patch or will you fix it during apply?
On Mon, Oct 14, 2013 at 02:34:19PM +0200, 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.
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
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
Mon, Oct 14, 2013 at 02:54:17PM CEST, olichtne@redhat.com wrote:
Typo in the subject... pyrout2 -> pyroute2. should I resend the patch or will you fix it during apply?
Np. I will fix that
On Mon, Oct 14, 2013 at 02:34:19PM +0200, 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.
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
On Mon, Oct 14, 2013 at 02:59:58PM +0200, Jan Tluka wrote:
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.
Both easy_install and pip (the newer way of accessing pypi) cover this. The pyroute2 package available there is of version 0.1.12 so 1 ahead of Fedora.
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
Mon, Oct 14, 2013 at 03:18:42PM CEST, olichtne@redhat.com wrote:
On Mon, Oct 14, 2013 at 02:59:58PM +0200, Jan Tluka wrote:
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.
Both easy_install and pip (the newer way of accessing pypi) cover this. The pyroute2 package available there is of version 0.1.12 so 1 ahead of Fedora.
Perfect!
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
lnst-developers@lists.fedorahosted.org