Example #1
0
bool VlanMgr::addHostVlan(int vlan_id)
{
    SWSS_LOG_ENTER();

    // The command should be generated as:
    // /bin/bash -c "/sbin/bridge vlan add vid {{vlan_id}} dev Bridge self &&
    //               /sbin/ip link add link Bridge up name Vlan{{vlan_id}} address {{gMacAddress}} type vlan id {{vlan_id}}"
    const std::string cmds = std::string("")
      + BASH_CMD + " -c \""
      + BRIDGE_CMD + " vlan add vid " + std::to_string(vlan_id) + " dev " + DOT1Q_BRIDGE_NAME + " self && "
      + IP_CMD + " link add link " + DOT1Q_BRIDGE_NAME
               + " up"
               + " name " + VLAN_PREFIX + std::to_string(vlan_id)
               + " address " + gMacAddress.to_string()
               + " type vlan id " + std::to_string(vlan_id) + "\"";

    std::string res;
    EXEC_WITH_ERROR_THROW(cmds, res);

    return true;
}
Example #2
0
    static void SetUpTestCase(void)
    {
        mac = MacAddress("00:F2:F2:F2:F2:F2");

        LOGG(TEST_INFO, FRAMEWORK, "init mac %s\n", mac.to_string().c_str());

        LOGG(TEST_INFO, FRAMEWORK, "sai_api_initialize\n");
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_initialize(0, (service_method_table_t *)&test_services));

        LOGG(TEST_INFO, FRAMEWORK, "sai_api_query SAI_API_SWITCH, SAI_API_PORT, ...\n");
        //query API methods of all types
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_SWITCH, (void**)&sai_switch_api));
        ASSERT_TRUE(sai_switch_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_PORT, (void**)&sai_port_api));
        ASSERT_TRUE(sai_port_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_VLAN, (void**)&sai_vlan_api));
        ASSERT_TRUE(sai_vlan_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_VIRTUAL_ROUTER, (void**)&sai_vr_api));
        ASSERT_TRUE(sai_vr_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_ROUTER_INTERFACE, (void**)&sai_rif_api));
        ASSERT_TRUE(sai_rif_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_HOST_INTERFACE, (void**)&sai_hif_api));
        ASSERT_TRUE(sai_hif_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_NEIGHBOR, (void**)&sai_neighbor_api));
        ASSERT_TRUE(sai_neighbor_api != NULL);
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_ROUTE, (void**)&sai_route_api));
        ASSERT_TRUE(sai_route_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_NEXT_HOP, (void**)&sai_next_hop_api));
        ASSERT_TRUE(sai_next_hop_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_NEXT_HOP_GROUP,
                                (void**)&sai_next_hop_group_api));
        ASSERT_TRUE(sai_next_hop_group_api != NULL);

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_api_query(SAI_API_FDB,
                                (void**)&sai_fdb_api));
        ASSERT_TRUE(sai_fdb_api != NULL);


        LOGG(TEST_INFO, FRAMEWORK, "sai_log_set SAI_API_SWITCH, SAI_API_PORT, ...\n");
        //set log
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_SWITCH, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_PORT, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_VLAN, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_VIRTUAL_ROUTER, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_ROUTER_INTERFACE, SAI_LOG_DEBUG));


        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_HOST_INTERFACE, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_NEIGHBOR, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_ROUTE, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_NEXT_HOP, SAI_LOG_DEBUG));

        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_log_set(SAI_API_NEXT_HOP_GROUP, SAI_LOG_DEBUG));


        LOGG(TEST_INFO, FRAMEWORK, "sai_switch_api->initialize_switch \n");
        ASSERT_TRUE(sai_switch_api->initialize_switch);
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_switch_api->initialize_switch(0, "0xb850", "",
                          &plat_switch_notification_handlers));


        sai_attribute_t     attr;

        attr.id = SAI_SWITCH_ATTR_SRC_MAC_ADDRESS;
        memcpy(attr.value.mac, mac.to_bytes(), 6);
        ASSERT_TRUE(sai_switch_api->set_switch_attribute != NULL);

        LOGG(TEST_INFO, FRAMEWORK, "sai_switch_api->set_switch_attribute SAI_SWITCH_ATTR_SRC_MAC_ADDRESS %s\n",
             mac.to_string().c_str());
        ASSERT_EQ(SAI_STATUS_SUCCESS,
                  sai_switch_api->set_switch_attribute(&attr));

        LOGG(TEST_INFO, FRAMEWORK, "Create neighbor_mgr, nexthopgrp_mgr and route_mgr\n");

        nexthop_mgr = new NextHopMgr();
        neighbor_mgr = new NeighborMgr(nexthop_mgr);
        nexthopgrp_mgr = new NextHopGrpMgr(neighbor_mgr);
        route_mgr = new RouteMgr(neighbor_mgr, nexthopgrp_mgr);
        fdb_mgr = new FdbMgr();


        LOGG(TEST_INFO, FRAMEWORK, "Set Up L3 Interfaces\n");
        ASSERT_EQ(true, basic_router_setup());
    }