selftests/tc-testing: Add support for ifb devices

Add support for ifb devices in tdc so that tests with the nsPlugin are
able to use it when necessary.

Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Victor Nogueira <victor@mojatatu.com>
Link: https://patch.msgid.link/20260521150811.1896373-1-victor@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Victor Nogueira 2026-05-21 12:08:10 -03:00 committed by Jakub Kicinski
parent 1a1f055318
commit 4177fd4469
4 changed files with 12 additions and 0 deletions

View File

@ -4,6 +4,7 @@
CONFIG_DUMMY=y
CONFIG_VETH=y
CONFIG_IFB=y
#
# Core Netfilter Configuration

View File

@ -120,6 +120,7 @@ class SubPlugin(TdcPlugin):
dev0 = self.args.NAMES["DEV0"];
dev1 = self.args.NAMES["DEV1"];
dummy = self.args.NAMES["DUMMY"];
ifb = self.args.NAMES['IFB']
if self.args.verbose:
print('{}._nl_ns_create'.format(self.sub_class))
@ -129,6 +130,7 @@ class SubPlugin(TdcPlugin):
with IPRoute() as ip:
ip.link('add', ifname=dev1, kind='veth', peer={'ifname': dev0, 'net_ns_fd':'/proc/1/ns/net'})
ip.link('add', ifname=dummy, kind='dummy')
ip.link('add', ifname=ifb, kind='ifb')
ticks = 20
while True:
if ticks == 0:
@ -136,8 +138,10 @@ class SubPlugin(TdcPlugin):
try:
dev1_idx = ip.link_lookup(ifname=dev1)[0]
dummy_idx = ip.link_lookup(ifname=dummy)[0]
ifb_idx = ip.link_lookup(ifname=ifb)[0]
ip.link('set', index=dev1_idx, state='up')
ip.link('set', index=dummy_idx, state='up')
ip.link('set', index=ifb_idx, state='up')
break
except:
time.sleep(0.1)
@ -169,8 +173,11 @@ class SubPlugin(TdcPlugin):
cmds.append(self._replace_keywords('link set $DEV1 netns {}'.format(ns)))
cmds.append(self._replace_keywords('link add $DUMMY type dummy'.format(ns)))
cmds.append(self._replace_keywords('link set $DUMMY netns {}'.format(ns)))
cmds.append(self._replace_keywords('link add $IFB type ifb'))
cmds.append(self._replace_keywords('link set $IFB netns {}'.format(ns)))
cmds.append(self._replace_keywords('netns exec {} $IP link set $DEV1 up'.format(ns)))
cmds.append(self._replace_keywords('netns exec {} $IP link set $DUMMY up'.format(ns)))
cmds.append(self._replace_keywords('netns exec {} $IP link set $IFB up'.format(ns)))
cmds.append(self._replace_keywords('link set $DEV0 up'.format(ns)))
if self.args.device:

View File

@ -378,6 +378,7 @@ def run_one_test(pm, args, index, tidx):
dev0 = NAMES['DEV0']
dev1 = NAMES['DEV1']
dummy = NAMES['DUMMY']
ifb = NAMES['IFB']
result = True
tresult = ""
tap = ""
@ -414,6 +415,7 @@ def run_one_test(pm, args, index, tidx):
NAMES['DEV0'] = '{}id{}'.format(NAMES['DEV0'], tidx['id'])
NAMES['DEV1'] = '{}id{}'.format(NAMES['DEV1'], tidx['id'])
NAMES['DUMMY'] = '{}id{}'.format(NAMES['DUMMY'], tidx['id'])
NAMES['IFB'] = '{}id{}'.format(NAMES['IFB'], tidx['id'])
pm.call_pre_case(tidx)
prepare_env(tidx, args, pm, 'setup', "-----> prepare stage", tidx["setup"])
@ -474,6 +476,7 @@ def run_one_test(pm, args, index, tidx):
NAMES['DEV0'] = dev0
NAMES['DEV1'] = dev1
NAMES['DUMMY'] = dummy
NAMES['IFB'] = ifb
return res

View File

@ -17,6 +17,7 @@ NAMES = {
'DEV1': 'v0p1',
'DEV2': '',
'DUMMY': 'dummy1',
'IFB': 'ifbtdc0',
'ETHTOOL': '/usr/sbin/ethtool',
'ETH': 'eth0',
'BATCH_FILE': './batch.txt',