Skip to content

Commit 69fae2a

Browse files
authored
add v4 over v6 routing (#133)
1 parent 499dfdb commit 69fae2a

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

p4/sidecar-lite.p4

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ control router_v4_route(
378378
) {
379379
table rtr {
380380
key = { ingress.path_idx: exact; }
381-
actions = { forward; forward_vlan; }
381+
actions = { forward; forward_v6; forward_vlan; forward_vlan_v6; }
382382
// should never happen, but the compiler requires a default
383383
default_action = drop;
384384
}
@@ -394,12 +394,26 @@ control router_v4_route(
394394
egress.drop = false;
395395
}
396396

397+
action forward_v6(bit<16> port, bit<128> nexthop) {
398+
egress.port = port;
399+
egress.vlan_id = 12w0;
400+
egress.nexthop_v6 = nexthop;
401+
egress.drop = false;
402+
}
403+
397404
action forward_vlan(bit<16> port, bit<32> nexthop, bit<12> vlan_id) {
398405
egress.port = port;
399406
egress.vlan_id = vlan_id;
400407
egress.nexthop_v4 = nexthop;
401408
egress.drop = false;
402409
}
410+
411+
action forward_vlan_v6(bit<16> port, bit<128> nexthop, bit<12> vlan_id) {
412+
egress.port = port;
413+
egress.vlan_id = vlan_id;
414+
egress.nexthop_v6 = nexthop;
415+
egress.drop = false;
416+
}
403417
}
404418

405419
control router_v4_idx(

scadm/src/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,13 +924,15 @@ fn dump_tables(table: &BTreeMap<String, Vec<TableEntry>>) {
924924
Some(idx) => format!("{idx}"),
925925
None => "?".into(),
926926
};
927-
if e.action_id == "forward" {
927+
if e.action_id == "forward" || e.action_id == "forward_v6" {
928928
let gw = match get_port_addr(&e.parameter_data, false) {
929929
Some((a, p)) => format!("{a} ({p})"),
930930
None => "?".into(),
931931
};
932932
println!("{idx} -> {gw}");
933-
} else if e.action_id == "forward_vlan" {
933+
} else if e.action_id == "forward_vlan"
934+
|| e.action_id == "forward_vlan_v6"
935+
{
934936
let gw = match get_port_addr_vlan(&e.parameter_data, false) {
935937
Some((a, p, v)) => format!("{a} ({p}) vid: {v}"),
936938
None => "?".into(),

0 commit comments

Comments
 (0)