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