Merge branch 'tc-testing-dnat-tuple-collision'
Marcelo Ricardo Leitner says: ==================== tc-testing: add test for ct DNAT tuple collision That was fixed in 13c62f5371e3 ("net/sched: act_ct: handle DNAT tuple collision"). For that, it requires that tdc is able to send diverse packets with scapy, which is then done on the 2nd patch of this series. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
f84974e75f
@ -29,22 +29,26 @@ class SubPlugin(TdcPlugin):
|
||||
return
|
||||
|
||||
# Check for required fields
|
||||
scapyinfo = self.args.caseinfo['scapy']
|
||||
scapy_keys = ['iface', 'count', 'packet']
|
||||
missing_keys = []
|
||||
keyfail = False
|
||||
for k in scapy_keys:
|
||||
if k not in scapyinfo:
|
||||
keyfail = True
|
||||
missing_keys.add(k)
|
||||
if keyfail:
|
||||
print('{}: Scapy block present in the test, but is missing info:'
|
||||
.format(self.sub_class))
|
||||
print('{}'.format(missing_keys))
|
||||
lscapyinfo = self.args.caseinfo['scapy']
|
||||
if type(lscapyinfo) != list:
|
||||
lscapyinfo = [ lscapyinfo, ]
|
||||
|
||||
pkt = eval(scapyinfo['packet'])
|
||||
if '$' in scapyinfo['iface']:
|
||||
tpl = Template(scapyinfo['iface'])
|
||||
scapyinfo['iface'] = tpl.safe_substitute(NAMES)
|
||||
for count in range(scapyinfo['count']):
|
||||
sendp(pkt, iface=scapyinfo['iface'])
|
||||
for scapyinfo in lscapyinfo:
|
||||
scapy_keys = ['iface', 'count', 'packet']
|
||||
missing_keys = []
|
||||
keyfail = False
|
||||
for k in scapy_keys:
|
||||
if k not in scapyinfo:
|
||||
keyfail = True
|
||||
missing_keys.append(k)
|
||||
if keyfail:
|
||||
print('{}: Scapy block present in the test, but is missing info:'
|
||||
.format(self.sub_class))
|
||||
print('{}'.format(missing_keys))
|
||||
|
||||
pkt = eval(scapyinfo['packet'])
|
||||
if '$' in scapyinfo['iface']:
|
||||
tpl = Template(scapyinfo['iface'])
|
||||
scapyinfo['iface'] = tpl.safe_substitute(NAMES)
|
||||
for count in range(scapyinfo['count']):
|
||||
sendp(pkt, iface=scapyinfo['iface'])
|
||||
|
@ -406,5 +406,50 @@
|
||||
"teardown": [
|
||||
"$TC actions flush action ct"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "3992",
|
||||
"name": "Add ct action triggering DNAT tuple conflict",
|
||||
"category": [
|
||||
"actions",
|
||||
"ct",
|
||||
"scapy"
|
||||
],
|
||||
"plugins": {
|
||||
"requires": [
|
||||
"nsPlugin",
|
||||
"scapyPlugin"
|
||||
]
|
||||
},
|
||||
"setup": [
|
||||
[
|
||||
"$TC qdisc del dev $DEV1 ingress",
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
255
|
||||
],
|
||||
"$TC qdisc add dev $DEV1 ingress"
|
||||
],
|
||||
"cmdUnderTest": "$TC filter add dev $DEV1 ingress protocol ip prio 1 flower ct_state -trk action ct commit nat dst addr 20.0.0.1 port 10 pipe action drop",
|
||||
"scapy": [
|
||||
{
|
||||
"iface": "$DEV0",
|
||||
"count": 1,
|
||||
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.10')/TCP(sport=5000,dport=10)"
|
||||
},
|
||||
{
|
||||
"iface": "$DEV0",
|
||||
"count": 1,
|
||||
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
|
||||
}
|
||||
],
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "cat /proc/net/nf_conntrack",
|
||||
"matchPattern": "dst=10.0.0.20",
|
||||
"matchCount": "1",
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DEV1 ingress"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user