sai_status_t sai_api_initialize( _In_ uint64_t flags, _In_ const service_method_table_t* services) { sai_status_t status = SAI_STATUS_SUCCESS; unsigned int num_ports = 32; if(!initialized) { SAI_LOG(SAI_LOG_WARN, SAI_API_UNSPECIFIED, "INIT device"); #ifndef BMV2 bmi_port_create_mgr(&port_mgr); rmt_init(); rmt_logger_set((p4_logging_f) printf); status = load_config("port.cfg", &num_ports, &log_level); if(status != 0) return status; rmt_log_level_set(log_level); rmt_transmit_register(transmit_wrapper); #endif switch_api_init(0, num_ports); start_switch_api_packet_driver(); initialized = 1; sai_initialize(); #ifndef BMV2 bmi_set_packet_handler(port_mgr, packet_handler); #endif } services = &sai_services; return status; }
void switchlink_api_init() { sai_status_t status = SAI_STATUS_SUCCESS; sai_initialize(); status = sai_api_query(SAI_API_SWITCH, (void **)&switch_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_VIRTUAL_ROUTER, (void **)&vrf_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_VLAN, (void **)&vlan_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_STP, (void **)&stp_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_FDB, (void **)&fdb_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_ROUTER_INTERFACE, (void **)&rintf_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_NEIGHBOR, (void **)&neigh_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_NEXT_HOP, (void **)&nhop_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_NEXT_HOP_GROUP, (void **)&nhop_group_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_ROUTE, (void **)&route_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_IPMC, (void **)&ipmc_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_L2MC, (void **)&l2mc_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_HOST_INTERFACE, (void **)&host_intf_api); assert(status == SAI_STATUS_SUCCESS); status = sai_api_query(SAI_API_ACL, (void **)&acl_api); assert(status == SAI_STATUS_SUCCESS); register_sai_notifications(); register_sai_traps(); get_port_list(); }