int mupnp_net_gethostinterfaces(mUpnpNetworkInterfaceList* netIfList) { mupnp_log_debug_l4("Entering...\n"); mUpnpNetworkInterface* netIf; struct hostent hostEnt; B buf[HBUFLEN]; ERR err; char* ifname = MUPNP_NET_DEFAULT_IFNAME; char ifaddr[32]; mupnp_net_interfacelist_clear(netIfList); err = so_gethostbyname("localhost", &hostEnt, buf); if (err != 0) return 0; inet_ntop(hostEnt.h_addrtype, hostEnt.h_addr, ifaddr, sizeof(ifname)); netIf = mupnp_net_interface_new(); mupnp_net_interface_setname(netIf, ifname); mupnp_net_interface_setaddress(netIf, ifaddr); mupnp_net_interfacelist_add(netIfList, netIf); mupnp_log_debug_l4("Leaving...\n"); return mupnp_net_interfacelist_size(netIfList); }
BOOL cg_socket_tosockaddrin(char *addr, int port, struct sockaddr_in *sockaddr, BOOL isBindAddr) { cg_log_debug_l4("Entering...\n"); cg_socket_startup(); memset(sockaddr, 0, sizeof(struct sockaddr_in)); #if defined(TENGINE) && defined(CG_TENGINE_NET_KASAGO) sockaddr->sin_family = AF_INET; sockaddr->sin_addr.s_addr = ka_htonl(INADDR_ANY); sockaddr->sin_port = ka_htons((unsigned short)port); #else sockaddr->sin_family = AF_INET; sockaddr->sin_addr.s_addr = htonl(INADDR_ANY); sockaddr->sin_port = htons((unsigned short)port); #endif if (isBindAddr == TRUE) { #if defined(BTRON) || (defined(TENGINE) && !defined(CG_TENGINE_NET_KASAGO)) sockaddr->sin_addr.s_addr = inet_addr(addr); if (sockaddr->sin_addr.s_addr == -1 /*INADDR_NONE*/) { struct hostent hent; B hostBuf[HBUFLEN]; if (so_gethostbyname((B*)addr, &hent, hostBuf) != 0) return FALSE; memcpy(&(sockaddr->sin_addr), hent.h_addr, hent.h_length); } #elif defined(TENGINE) && defined(CG_TENGINE_NET_KASAGO) sockaddr->sin_addr.s_addr = ka_inet_addr(addr); #else sockaddr->sin_addr.s_addr = inet_addr(addr); if (sockaddr->sin_addr.s_addr == INADDR_NONE) { struct hostent *hent = gethostbyname(addr); if (hent == NULL) return FALSE; memcpy(&(sockaddr->sin_addr), hent->h_addr, hent->h_length); } #endif } cg_log_debug_l4("Leaving...\n"); return TRUE; }