commit acae4999ba1fe83ff5a7de570832512a2c6f76eb
Author: Jiri Prochazka <jprochaz(a)redhat.com>
Date: Thu May 21 14:24:20 2015 +0200
Add Slave NetEm param configuration and deconfiguration support
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>
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
Acked-by: Jiri Pirko <jiri(a)resnulli.us>
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()