2019-07-10 07:07:17 +00:00
|
|
|
#ifndef NICO_EGRESS
|
|
|
|
#define NICO_EGRESS
|
|
|
|
|
|
|
|
|
|
|
|
/********************** ROUTING (egress definiton) TABLES ***********************************/
|
|
|
|
|
2019-07-10 20:28:37 +00:00
|
|
|
action set_egress_port (port_t out_port) {
|
|
|
|
#ifndef _SUME_SWITCH_P4_
|
|
|
|
standard_metadata.egress_spec = out_port;
|
|
|
|
#else
|
|
|
|
sume_metadata.dst_port = out_port;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
action set_egress_port_and_mac (port_t out_port, mac_addr_t mac_addr) {
|
|
|
|
hdr.ethernet.dst_addr = mac_addr;
|
|
|
|
set_egress_port(out_port);
|
|
|
|
}
|
|
|
|
|
|
|
|
table v6_networks {
|
|
|
|
key = {
|
|
|
|
hdr.ipv6.dst_addr: lpm;
|
2019-07-10 07:07:17 +00:00
|
|
|
}
|
2019-07-10 20:28:37 +00:00
|
|
|
actions = {
|
|
|
|
set_egress_port;
|
|
|
|
set_egress_port_and_mac;
|
|
|
|
controller_debug;
|
|
|
|
controller_reply;
|
|
|
|
controller_debug_table_id;
|
|
|
|
NoAction;
|
|
|
|
}
|
|
|
|
size = ROUTING_TABLE_SIZE;
|
2019-07-10 07:07:17 +00:00
|
|
|
|
2019-07-10 20:28:37 +00:00
|
|
|
default_action = controller_debug_table_id(TABLE_V6_NETWORKS);
|
|
|
|
}
|
|
|
|
|
|
|
|
table v4_networks {
|
|
|
|
key = {
|
|
|
|
hdr.ipv4.dst_addr: lpm;
|
2019-07-10 07:07:17 +00:00
|
|
|
}
|
2019-07-10 20:28:37 +00:00
|
|
|
actions = {
|
|
|
|
set_egress_port;
|
|
|
|
set_egress_port_and_mac;
|
|
|
|
controller_debug;
|
|
|
|
controller_debug_table_id;
|
|
|
|
NoAction;
|
2019-07-10 07:07:17 +00:00
|
|
|
}
|
2019-07-10 20:28:37 +00:00
|
|
|
size = ROUTING_TABLE_SIZE;
|
|
|
|
default_action = controller_debug_table_id(TABLE_V4_NETWORKS);
|
|
|
|
}
|
2019-07-10 07:07:17 +00:00
|
|
|
#endif
|