gint main (gint argc, gchar *argv[]) { if (!init_ui (&argc, &argv)) { return -2; } if (!init_upnp ()) { return -3; } gtk_main (); deinit_upnp (); deinit_ui (); return 0; }
SWITCH_DECLARE(void) switch_nat_init(switch_memory_pool_t *pool) { /* try free dynamic data structures prior to resetting to 0 */ FreeUPNPUrls(&nat_globals.urls); switch_safe_free(nat_globals.descURL); memset(&nat_globals, 0, sizeof(nat_globals)); if (first_init) { memset(&nat_globals_perm, 0, sizeof(nat_globals_perm)); nat_globals_perm.pool = pool; } switch_find_local_ip(nat_globals.pvt_addr, sizeof(nat_globals.pvt_addr), NULL, AF_INET); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Scanning for NAT\n"); init_pmp(); if (!nat_globals.nat_type) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Checking for UPnP\n"); init_upnp(); } if (nat_globals.nat_type) { switch_core_set_variable("nat_public_addr", nat_globals.pub_addr); switch_core_set_variable("nat_private_addr", nat_globals.pvt_addr); switch_core_set_variable("nat_type", nat_globals.nat_type == SWITCH_NAT_TYPE_PMP ? "pmp" : "upnp"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "NAT detected type: %s, ExtIP: '%s'\n", nat_globals.nat_type == SWITCH_NAT_TYPE_PMP ? "pmp" : "upnp", nat_globals.pub_addr); if (!nat_thread_p) { switch_nat_thread_start(); } } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No PMP or UPnP NAT devices detected!\n"); } first_init = SWITCH_FALSE; initialized = SWITCH_TRUE; }
// // InitNetCommon // void InitNetCommon(void) { unsigned long _true = true; #ifdef _WIN32 WSADATA wsad; WSAStartup( MAKEWORD(2,2), &wsad ); #endif inet_socket = UDPsocket (); #ifdef ODA_HAVE_MINIUPNP init_upnp(); #endif BindToLocalPort (inet_socket, localport); if (ioctlsocket (inet_socket, FIONBIO, &_true) == -1) I_FatalError ("UDPsocket: ioctl FIONBIO: %s", strerror(errno)); // enter message information into message info structs InitNetMessageFormats(); SZ_Clear(&net_message); }