diff options
Diffstat (limited to 'src/network/core/address.cpp')
-rw-r--r-- | src/network/core/address.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 57edf50cb..cb93e66b3 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -16,6 +16,11 @@ #include "address.h" #include "../../debug.h" +/** + * Get the hostname; in case it wasn't given the + * IPv4 dotted representation is given. + * @return the hostname + */ const char *NetworkAddress::GetHostname() { if (StrEmpty(this->hostname) && this->address.ss_family != AF_UNSPEC) { @@ -25,6 +30,10 @@ const char *NetworkAddress::GetHostname() return this->hostname; } +/** + * Get the port. + * @return the port. + */ uint16 NetworkAddress::GetPort() const { switch (this->address.ss_family) { @@ -40,6 +49,10 @@ uint16 NetworkAddress::GetPort() const } } +/** + * Set the port. + * @param port set the port number. + */ void NetworkAddress::SetPort(uint16 port) { switch (this->address.ss_family) { @@ -57,6 +70,12 @@ void NetworkAddress::SetPort(uint16 port) } } +/** + * Get the address as a string, e.g. 127.0.0.1:12345. + * @param buffer the buffer to write to + * @param last the last element in the buffer + * @param with_family whether to add the family (e.g. IPvX). + */ void NetworkAddress::GetAddressAsString(char *buffer, const char *last, bool with_family) { if (this->GetAddress()->ss_family == AF_INET6) buffer = strecpy(buffer, "[", last); @@ -75,6 +94,12 @@ void NetworkAddress::GetAddressAsString(char *buffer, const char *last, bool wit } } +/** + * Get the address as a string, e.g. 127.0.0.1:12345. + * @param with_family whether to add the family (e.g. IPvX). + * @return the address + * @note NOT thread safe + */ const char *NetworkAddress::GetAddressAsString(bool with_family) { /* 6 = for the : and 5 for the decimal port number */ @@ -94,6 +119,10 @@ static SOCKET ResolveLoopProc(addrinfo *runp) return !INVALID_SOCKET; } +/** + * Get the address in its internal representation. + * @return the address + */ const sockaddr_storage *NetworkAddress::GetAddress() { if (!this->IsResolved()) { @@ -107,6 +136,11 @@ const sockaddr_storage *NetworkAddress::GetAddress() return &this->address; } +/** + * Checks of this address is of the given family. + * @param family the family to check against + * @return true if it is of the given family + */ bool NetworkAddress::IsFamily(int family) { if (!this->IsResolved()) { @@ -115,6 +149,12 @@ bool NetworkAddress::IsFamily(int family) return this->address.ss_family == family; } +/** + * Checks whether this IP address is contained by the given netmask. + * @param netmask the netmask in CIDR notation to test against. + * @note netmask without /n assumes all bits need to match. + * @return true if this IP is within the netmask. + */ bool NetworkAddress::IsInNetmask(char *netmask) { /* Resolve it if we didn't do it already */ @@ -169,6 +209,15 @@ bool NetworkAddress::IsInNetmask(char *netmask) return true; } +/** + * Resolve this address into a socket + * @param family the type of 'protocol' (IPv4, IPv6) + * @param socktype the type of socket (TCP, UDP, etc) + * @param flags the flags to send to getaddrinfo + * @param sockets the list of sockets to add the sockets to + * @param func the inner working while looping over the address info + * @return the resolved socket or INVALID_SOCKET. + */ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList *sockets, LoopProc func) { struct addrinfo *ai; @@ -266,6 +315,10 @@ static SOCKET ConnectLoopProc(addrinfo *runp) return sock; } +/** + * Connect to the given address. + * @return the connected socket or INVALID_SOCKET. + */ SOCKET NetworkAddress::Connect() { DEBUG(net, 1, "Connecting to %s", this->GetAddressAsString()); @@ -324,6 +377,11 @@ static SOCKET ListenLoopProc(addrinfo *runp) return sock; } +/** + * Make the given socket listen. + * @param socktype the type of socket (TCP, UDP, etc) + * @param sockets the list of sockets to add the sockets to + */ void NetworkAddress::Listen(int socktype, SocketList *sockets) { assert(sockets != NULL); @@ -340,6 +398,12 @@ void NetworkAddress::Listen(int socktype, SocketList *sockets) } } +/** + * Convert the socket type into a string + * @param socktype the socket type to convert + * @return the string representation + * @note only works for SOCK_STREAM and SOCK_DGRAM + */ /* static */ const char *NetworkAddress::SocketTypeAsString(int socktype) { switch (socktype) { @@ -349,6 +413,12 @@ void NetworkAddress::Listen(int socktype, SocketList *sockets) } } +/** + * Convert the address family into a string + * @param family the family to convert + * @return the string representation + * @note only works for AF_INET, AF_INET6 and AF_UNSPEC + */ /* static */ const char *NetworkAddress::AddressFamilyAsString(int family) { switch (family) { |