Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();
}