This patch provides support for compiling and tc command with NetEm
params for both configuration and deconfiguration. Supported are
both NetworkManager and non-NetworkManager variants.
Signed-off-by: Jiri Prochazka <jprochaz(a)redhat.com>
---
lnst/Slave/NetConfigDevice.py | 11 ++++++++++-
lnst/Slave/NmConfigDevice.py | 9 ++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/lnst/Slave/NetConfigDevice.py b/lnst/Slave/NetConfigDevice.py
index 4ac2899..6569410 100644
--- a/lnst/Slave/NetConfigDevice.py
+++ b/lnst/Slave/NetConfigDevice.py
@@ -15,7 +15,7 @@ import logging
import re
import sys
from lnst.Common.ExecCmd import exec_cmd
-from lnst.Slave.NetConfigCommon import get_slaves, get_option, get_slave_option
+from lnst.Slave.NetConfigCommon import get_slaves, get_option, get_slave_option,
parse_netem
from lnst.Common.Utils import kmod_in_use, bool_it
from lnst.Slave.NmConfigDevice import type_class_mapping as nm_type_class_mapping
from lnst.Slave.NmConfigDevice import is_nm_managed
@@ -86,6 +86,15 @@ class NetConfigDeviceEth(NetConfigDeviceGeneric):
config = self._dev_config
exec_cmd("ip addr flush %s" % config["name"])
exec_cmd("ethtool -A %s rx off tx off" % config["name"],
die_on_err=False, log_outputs=False)
+ if config["netem"] is not None:
+ cmd = "tc qdisc add dev %s root netem %s" %
(config["name"], parse_netem(config["netem"]))
+ exec_cmd(cmd)
+ config["netem_cmd"] = cmd
+
+ def deconfigure(self):
+ config = self._dev_config
+ if "netem_cmd" in config:
+ exec_cmd(config["netem_cmd"].replace("add",
"del"))
class NetConfigDeviceLoopback(NetConfigDeviceGeneric):
def configure(self):
diff --git a/lnst/Slave/NmConfigDevice.py b/lnst/Slave/NmConfigDevice.py
index c3824cb..8e2f1dd 100644
--- a/lnst/Slave/NmConfigDevice.py
+++ b/lnst/Slave/NmConfigDevice.py
@@ -19,7 +19,7 @@ import uuid
import socket, struct
import time
from lnst.Common.ExecCmd import exec_cmd
-from lnst.Slave.NetConfigCommon import get_slaves, get_option, get_slave_option
+from lnst.Slave.NetConfigCommon import get_slaves, get_option, get_slave_option,
parse_netem
from lnst.Common.Utils import kmod_in_use, bool_it
from lnst.Common.NetUtils import scan_netdevs
from lnst.Common.Utils import check_process_running
@@ -371,8 +371,15 @@ class NmConfigDeviceEth(NmConfigDeviceGeneric):
self._connection = connection
self._nm_add_connection()
+ if config["netem"] is not None:
+ cmd = "tc qdisc add dev %s root netem %s" %
(config["name"], parse_netem(config["netem"]))
+ exec_cmd(cmd)
+ config["netem_cmd"] = cmd
def deconfigure(self):
+ config = self._dev_config
+ if "netem_cmd" in config:
+ exec_cmd(config["netem_cmd"].replace("add",
"del"))
if self._con_obj_path != None:
self._nm_rm_connection()
--
2.1.0