//Network library

dword network_lib = #a_network_lib;
char a_network_lib[21]="/sys/lib/network.obj\0";

dword network_lib_init    = #aLib_init;
dword inet_addr           = #aInet_addr;  //"192.168.0.1" -> dword IP
dword inet_ntoa           = #aInet_ntoa;
dword getaddrinfo         = #aGetaddrinfo;
dword getaddrinfo_start   = #aGetaddrinfo_start;
dword getaddrinfo_process = #aGetaddrinfo_process;
dword getaddrinfo_abort   = #aGetaddrinfo_abort;
dword freeaddrinfo        = #aFreeaddrinfo;
$DD 2 dup 0

char aLib_init[9]              = "lib_init\0";
char aInet_addr[10]            = "inet_addr\0";
char aInet_ntoa[10]            = "inet_ntoa\0";
char aGetaddrinfo[12]          = "getaddrinfo\0";
char aGetaddrinfo_start[18]    = "getaddrinfo_start\0";
char aGetaddrinfo_process[20]  = "getaddrinfo_process\0";
char aGetaddrinfo_abort[18]    = "getaddrinfo_abort\0";
char aFreeaddrinfo[13]         = "freeaddrinfo\0";

/*
addr соответствует IP 10.101.102.103
itoa((addr&0xFF000000)>>24) равно 103
itoa((addr&0xFF0000)>>16) —это 102
itoa((addr&0xFF00)>>8) — это 101
itoa(addr&0xFF) — это 10
*/

dword GetIPfromAdress(dword addr)
{
	dword lpointer, IPa;
	getaddrinfo stdcall (addr, 0, 0, #lpointer);
	if (EAX!=0) IPa = 0; else IPa = DSDWORD[DSDWORD[lpointer+24]+4];
	freeaddrinfo stdcall (lpointer);
	return IPa;
}

/*
//Convert the string from standard IPv4 dotted notation to integer IP addr.
inet_addr stdcall ("192.168.0.1");
server_IP = EAX;


char* __stdcall inet_ntoa(struct in_addr in);
Convert the Internet host address to standard IPv4 dotted notation.

getaddrinfo(__in const char* hostname, __in const char* servname,
            __in const struct addrinfo* hints, __out struct addrinfo **res);    
struct addrinfo {
    int     ai_flags;
    int     ai_family;
    int     ai_socktype;
    int     ai_protocol;
    size_t  ai_addrlen;
    struct sockaddr *ai_addr;
    char   *ai_canonname;
    struct addrinfo *ai_next;
}; 
*/