diff --git a/dash-pipeline/SAI/sai_api_gen.py b/dash-pipeline/SAI/sai_api_gen.py index 3c77f27ca..062592963 100755 --- a/dash-pipeline/SAI/sai_api_gen.py +++ b/dash-pipeline/SAI/sai_api_gen.py @@ -271,7 +271,7 @@ def write_sai_impl_files(sai_api): with open('./lib/sai' + sai_api['app_name'].replace('_', '') + '.cpp', 'w') as o: o.write(sai_impl_str) -def write_sai_makefile(sai_api_name_list): +def write_sai_makefile(sai_api_name_list, sai_api_full_name_list): env = Environment(loader=FileSystemLoader('.')) makefile_tm = env.get_template('/templates/Makefile.j2') makefile_str = makefile_tm.render(api_names = sai_api_name_list) @@ -281,7 +281,7 @@ def write_sai_makefile(sai_api_name_list): env = Environment(loader=FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) sai_impl_tm = env.get_template('/templates/utils.cpp.j2') - sai_impl_str = sai_impl_tm.render(tables = sai_api[TABLES_TAG], app_name = sai_api['app_name']) + sai_impl_str = sai_impl_tm.render(tables = sai_api[TABLES_TAG], app_name = sai_api['app_name'], api_names = sai_api_full_name_list) with open('./lib/utils.cpp', 'w') as o: o.write(sai_impl_str) @@ -393,6 +393,7 @@ def write_sai_files(sai_api): sai_apis, all_table_names = generate_sai_apis(json_program, args.ignore_tables.split(',')) sai_api_name_list = [] +sai_api_full_name_list = [] for sai_api in sai_apis: # Update object name reference for action params for table in sai_api[TABLES_TAG]: @@ -415,8 +416,9 @@ def write_sai_files(sai_api): write_sai_files(sai_api) write_sai_impl_files(sai_api) sai_api_name_list.append(sai_api['app_name'].replace('_', '')) + sai_api_full_name_list.append(sai_api['app_name']) -write_sai_makefile(sai_api_name_list) +write_sai_makefile(sai_api_name_list, sai_api_full_name_list) if args.print_sai_lib: print(json.dumps(sai_api, indent=2)) diff --git a/dash-pipeline/SAI/templates/utils.cpp.j2 b/dash-pipeline/SAI/templates/utils.cpp.j2 index debb29d96..683182933 100644 --- a/dash-pipeline/SAI/templates/utils.cpp.j2 +++ b/dash-pipeline/SAI/templates/utils.cpp.j2 @@ -244,13 +244,11 @@ sai_switch_api_t sai_switch_api_impl = { }; -/* TODO [cs] This should be auto-generated or part of per-API, auto-generated include file */ -extern sai_dash_api_t sai_dash_api_impl; -extern sai_dash_vnet_api_t sai_dash_vnet_api_impl; -extern sai_dash_acl_api_t sai_dash_acl_api_impl; +{% for api in api_names %} +extern sai_{{ api }}_api_t sai_{{ api }}_api_impl; +{% endfor %} -/* TODO [cs] This should be auto-generated */ sai_status_t sai_api_query( _In_ sai_api_t api, _Out_ void **api_method_table) { @@ -260,18 +258,12 @@ sai_status_t sai_api_query( *api_method_table = (void *)&sai_switch_api_impl; break; - case SAI_API_DASH: - *api_method_table = (void *)&sai_dash_api_impl; +{% for api in api_names %} + case SAI_API_{{ api | upper }}: + *api_method_table = (void *)&sai_{{ api }}_api_impl; break; - case SAI_API_DASH_ACL: - *api_method_table = (void *)&sai_dash_acl_api_impl; - break; - - case SAI_API_DASH_VNET: - *api_method_table = (void *)&sai_dash_vnet_api_impl; - break; - +{% endfor %} default: return SAI_STATUS_NOT_SUPPORTED; diff --git a/dash-pipeline/bmv2/dash_outbound.p4 b/dash-pipeline/bmv2/dash_outbound.p4 index 59e7c0292..8bec5a5f0 100644 --- a/dash-pipeline/bmv2/dash_outbound.p4 +++ b/dash-pipeline/bmv2/dash_outbound.p4 @@ -31,7 +31,7 @@ control outbound(inout headers_t hdr, direct_counter(CounterType.packets_and_bytes) routing_counter; - @name("outbound_routing|dash_vnet") + @name("outbound_routing|dash_outbound_routing") table routing { key = { meta.eni_id : exact @name("meta.eni_id:eni_id"); @@ -61,7 +61,7 @@ control outbound(inout headers_t hdr, direct_counter(CounterType.packets_and_bytes) ca_to_pa_counter; - @name("outbound_ca_to_pa|dash_vnet") + @name("outbound_ca_to_pa|dash_outbound_ca_to_pa") table ca_to_pa { key = { /* Flow for express route */ diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 6b21408a0..f138c6c8b 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -35,7 +35,7 @@ control dash_ingress(inout headers_t hdr, action accept() { } - @name("vip|dash") + @name("vip|dash_vip") table vip { key = { hdr.ipv4.dst_addr : exact @name("hdr.ipv4.dst_addr:VIP"); @@ -53,7 +53,7 @@ control dash_ingress(inout headers_t hdr, meta.direction = direction_t.OUTBOUND; } - @name("direction_lookup|dash") + @name("direction_lookup|dash_direction_lookup") table direction_lookup { key = { hdr.vxlan.vni : exact @name("hdr.vxlan.vni:VNI"); @@ -132,7 +132,7 @@ control dash_ingress(inout headers_t hdr, } } - @name("eni|dash") + @name("eni|dash_eni") table eni { key = { meta.eni_id : exact @name("meta.eni_id:eni_id"); @@ -166,7 +166,7 @@ control dash_ingress(inout headers_t hdr, meta.vnet_id = src_vnet_id; } - @name("pa_validation|dash_vnet") + @name("pa_validation|dash_pa_validation") table pa_validation { key = { meta.vnet_id: exact @name("meta.vnet_id:vnet_id"); @@ -181,7 +181,7 @@ control dash_ingress(inout headers_t hdr, const default_action = deny; } - @name("inbound_routing|dash_vnet") + @name("inbound_routing|dash_inbound_routing") table inbound_routing { key = { meta.eni_id: exact @name("meta.eni_id:eni_id"); @@ -201,7 +201,7 @@ control dash_ingress(inout headers_t hdr, meta.eni_id = eni_id; } - @name("eni_ether_address_map|dash") + @name("eni_ether_address_map|dash_eni") table eni_ether_address_map { key = { meta.eni_addr : exact @name("meta.eni_addr:address"); diff --git a/dash-pipeline/tests/libsai/Makefile b/dash-pipeline/tests/libsai/Makefile index 38fe7ac12..b605d2273 100644 --- a/dash-pipeline/tests/libsai/Makefile +++ b/dash-pipeline/tests/libsai/Makefile @@ -1,4 +1,7 @@ # Call make in each subdirectory +.ONESHELL: +SHELL = /bin/bash +.SHELLFLAGS += -e SUBDIRS := $(wildcard */.) diff --git a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp index cbb2b9775..f450ab199 100644 --- a/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp +++ b/dash-pipeline/tests/libsai/vnet_out/vnet_out.cpp @@ -49,8 +49,6 @@ extern sai_status_t sai_create_dash_acl_group( extern sai_status_t sai_remove_dash_acl_group( _In_ sai_object_id_t eni_id); -extern sai_dash_api_t sai_dash_api_impl; - int main(int argc, char **argv) { sai_object_id_t switch_id = SAI_NULL_OBJECT_ID;