diff --git a/include/enet/enet.h b/include/enet/enet.h index 4f90b5f..a4f89f7 100644 --- a/include/enet/enet.h +++ b/include/enet/enet.h @@ -505,6 +505,7 @@ ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSock @returns the address of the given hostName in address on success */ ENET_API int enet_address_set_host (ENetAddress * address, const char * hostName); +ENET_API int enet_address_set_address (ENetAddress * address, struct sockaddr * addr, socklen_t addrlen); ENET_API int enet_address_set_port (ENetAddress * address, enet_uint16 port); ENET_API int enet_address_equal (ENetAddress * address1, ENetAddress * address2); diff --git a/unix.c b/unix.c index a6b44f8..e928e07 100644 --- a/unix.c +++ b/unix.c @@ -158,6 +158,17 @@ enet_address_set_port (ENetAddress * address, enet_uint16 port) } } +int +enet_address_set_address (ENetAddress * address, struct sockaddr * addr, socklen_t addrlen) +{ + if (addrlen > sizeof(struct sockaddr_storage)) + return -1; + + memcpy (&address->address, addr, addrlen); + address->addressLength = addrlen; + return 0; +} + int enet_address_set_host (ENetAddress * address, const char * name) { diff --git a/win32.c b/win32.c index 9e149fc..6c9973c 100644 --- a/win32.c +++ b/win32.c @@ -80,6 +80,17 @@ enet_address_set_port (ENetAddress * address, enet_uint16 port) } } +int +enet_address_set_address (ENetAddress * address, struct sockaddr * addr, socklen_t addrlen) +{ + if (addrlen > sizeof(struct sockaddr_storage)) + return -1; + + memcpy (&address->address, addr, addrlen); + address->addressLength = addrlen; + return 0; +} + int enet_address_equal (ENetAddress * address1, ENetAddress * address2) {