Exemple #1
0
int main()
{
    printf("hello world\n");

    if(SetUp() < 0)
    { 
        TearDown();
        return -1;
    }

    GetPortMappingNum();

    //int i = 0;
    //for(i=0; i<30; i++)
    //{
    //    GetPortMappingByIndex(i);
    //}

    GetPortMapping(16738, "TCP");
    GetPortMapping(16738, "UDP");

    AddPortMapping(16738, 16738, "TCP", g_lanaddr);
    AddPortMapping(16738, 16738, "UDP", g_lanaddr);
    AddPortMapping(16738, 16738, "TCP", "192.168.1.120");
    AddPortMapping(16738, 16738, "UDP", "192.168.1.120");

    TearDown();

    return 0;
}
void Test_AddPortMapping(void)
{
    struct Upnp_Action_Request event;
    strcpy(event.DevUDN,"uuid:75802409-bccb-40e7-8e6c-fa095ecce13e");
    strcpy(event.ServiceID,"urn:upnp-org:serviceId:WANIPConn1");
    strcpy(event.ActionName,"AddPortMapping");

    // Add with remotehost
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_xml);
    CU_ASSERT(AddPortMapping(&event) == 0);

    // Add with wildcarded remotehost
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_wildcard_remotehost_xml);
    CU_ASSERT(AddPortMapping(&event) == 0);

    // Add with wildcarded internalclient
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_wildcard_internalclient_xml);
    CU_ASSERT(AddPortMapping(&event) == 715);

    // Add with wildcarded external port
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_wildcard_extport_xml);
    CU_ASSERT(AddPortMapping(&event) == 716);

    // Add with wildcarded internal port
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_wildcard_intport_xml);
    CU_ASSERT(AddPortMapping(&event) == 732);

    // Add with different port values
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_diff_ports_xml);
    CU_ASSERT(AddPortMapping(&event) == 724);

    // Invalid args
    event.ActionRequest = ixmlParseBuffer(add_portmapping_request_missing_parameter_xml);
    CU_ASSERT(AddPortMapping(&event) == 402);
}
void C4Network2UPnPP::AddMapping(C4Network2IOProtocol protocol, uint16_t intport, uint16_t extport)
{
	PortMapping mapping;
	mapping.external_port = extport;
	mapping.internal_port = intport;
	mapping.protocol = (protocol == P_TCP ? "TCP" : "UDP");

	added_mappings.push_back(mapping);

	action = std::async([this, action = std::move(action), mapping]() {
		action.wait();
		AddPortMapping(mapping);
	});
}