On Mon, Oct 14, 2013 at 02:59:58PM +0200, Jan Tluka wrote:
Mon, Oct 14, 2013 at 02:34:19PM CEST, olichtne(a)redhat.com wrote:
>From: Ondrej Lichtner <olichtne(a)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(a)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):
>--
>1.8.3.1
>
>_______________________________________________
>LNST-developers mailing list
>LNST-developers(a)lists.fedorahosted.org
>https://lists.fedorahosted.org/mailman/listinfo/lnst-developers