mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-31 13:03:02 +02:00
Let's drop the leading IETF or Infix prefixes from tests. Initially the idea was to mimnic the YANG models, but it's difficult to navigate and does not provide any real benefit to developers or end-users. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
123 lines
3.8 KiB
Python
Executable File
123 lines
3.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Tunnel interface bridged with physical
|
|
|
|
Set up a layer-2 tunnel between two DUTs, host is connected to the first DUT.
|
|
Bridge the interface connected to the host and the tunnel interface on the
|
|
first DUT. On host, verify connectivity with the second DUT through tunnel.
|
|
|
|
- Tunnel types: GRETAP, and VxLAN
|
|
- Connectivity: IPv4
|
|
"""
|
|
|
|
import infamy
|
|
|
|
|
|
class ArgumentParser(infamy.ArgumentParser):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.add_argument("--tunnel")
|
|
|
|
|
|
with infamy.Test() as test:
|
|
with test.step("Set up topology and attach to target DUTs"):
|
|
arg = ArgumentParser()
|
|
env = infamy.Env(args=arg)
|
|
left = env.attach("left", "mgmt")
|
|
right = env.attach("right", "mgmt")
|
|
tunnel = env.args.tunnel
|
|
|
|
with test.step("Configure DUTs with tunnel {tunnel}"):
|
|
if tunnel == "gretap":
|
|
CONTAINER_TYPE = "gre"
|
|
else:
|
|
CONTAINER_TYPE = tunnel
|
|
|
|
container_left = {
|
|
"local": "192.168.50.1",
|
|
"remote": "192.168.50.2"
|
|
}
|
|
container_right = {
|
|
"local": "192.168.50.2",
|
|
"remote": "192.168.50.1"
|
|
}
|
|
container_left.update({
|
|
"vni": 4
|
|
})
|
|
container_right.update({
|
|
"vni": 4
|
|
})
|
|
|
|
left.put_config_dicts({"ietf-interfaces": {
|
|
"interfaces": {
|
|
"interface": [{
|
|
"name": left["link"],
|
|
"ipv4": {
|
|
"address": [{
|
|
"ip": "192.168.50.1",
|
|
"prefix-length": 24
|
|
}],
|
|
"forwarding": True
|
|
}
|
|
}, {
|
|
"name": left["data"],
|
|
"bridge-port": {
|
|
"bridge": "br0"
|
|
}
|
|
}, {
|
|
"name": "br0",
|
|
"type": "infix-if-type:bridge"
|
|
}, {
|
|
"name": f"{tunnel}0",
|
|
"type": f"infix-if-type:{tunnel}",
|
|
CONTAINER_TYPE: container_left,
|
|
"bridge-port": {
|
|
"bridge": "br0"
|
|
}
|
|
|
|
}]
|
|
}
|
|
}})
|
|
|
|
right.put_config_dicts({
|
|
"ietf-interfaces": {
|
|
"interfaces": {
|
|
"interface": [{
|
|
"name": right["link"],
|
|
"ipv4": {
|
|
"address": [{
|
|
"ip": "192.168.50.2",
|
|
"prefix-length": 24
|
|
}],
|
|
"forwarding": True
|
|
},
|
|
"ipv6": {
|
|
"address": [{
|
|
"ip": "2001:db8:3c4d:50::2",
|
|
"prefix-length": 64
|
|
}]
|
|
}
|
|
}, {
|
|
"name": f"{tunnel}0",
|
|
"type": f"infix-if-type:{tunnel}",
|
|
"ipv4": {
|
|
"address": [{
|
|
"ip": "192.168.10.2",
|
|
"prefix-length": 24
|
|
}],
|
|
"forwarding": True
|
|
},
|
|
CONTAINER_TYPE: container_right,
|
|
}]
|
|
}
|
|
}
|
|
})
|
|
|
|
_, hport = env.ltop.xlate("host", "data")
|
|
with test.step(f"Test connectivity host:data to right:{tunnel}0 at 192.168.10.2"):
|
|
with infamy.IsolatedMacVlan(hport) as ns0:
|
|
ns0.addip("192.168.10.1")
|
|
ns0.must_reach("192.168.10.2")
|
|
|
|
test.succeed()
|