| OpenTTD
    | 
Wrapper for (un)resolved network addresses; there's no reason to transform a numeric IP to a string and then back again to pass it to functions. More...
#include <address.h>
 
  
 | Public Member Functions | |
| NetworkAddress (struct sockaddr_storage &address, int address_length) | |
| Create a network address based on a resolved IP and port. | |
| NetworkAddress (sockaddr *address, int address_length) | |
| Create a network address based on a resolved IP and port. | |
| NetworkAddress (const char *hostname="", uint16 port=0, int family=AF_UNSPEC) | |
| Create a network address based on a unresolved host and port. | |
| NetworkAddress (const NetworkAddress &address) | |
| Make a clone of another address. | |
| const char * | GetHostname () | 
| Get the hostname; in case it wasn't given the IPv4 dotted representation is given. | |
| void | GetAddressAsString (char *buffer, const char *last, bool with_family=true) | 
| Get the address as a string, e.g. | |
| const char * | GetAddressAsString (bool with_family=true) | 
| Get the address as a string, e.g. | |
| const sockaddr_storage * | GetAddress () | 
| Get the address in its internal representation. | |
| int | GetAddressLength () | 
| Get the (valid) length of the address. | |
| uint16 | GetPort () const | 
| Get the port. | |
| void | SetPort (uint16 port) | 
| Set the port. | |
| bool | IsResolved () const | 
| Check whether the IP address has been resolved already. | |
| bool | IsFamily (int family) | 
| Checks of this address is of the given family. | |
| bool | IsInNetmask (char *netmask) | 
| Checks whether this IP address is contained by the given netmask. | |
| int | CompareTo (NetworkAddress &address) | 
| Compare the address of this class with the address of another. | |
| bool | operator== (NetworkAddress &address) | 
| Compare the address of this class with the address of another. | |
| bool | operator== (NetworkAddress &address) const | 
| Compare the address of this class with the address of another. | |
| bool | operator!= (NetworkAddress address) const | 
| Compare the address of this class with the address of another. | |
| bool | operator< (NetworkAddress &address) | 
| Compare the address of this class with the address of another. | |
| SOCKET | Connect () | 
| Connect to the given address. | |
| void | Listen (int socktype, SocketList *sockets) | 
| Make the given socket listen. | |
| Static Public Member Functions | |
| static const char * | SocketTypeAsString (int socktype) | 
| Convert the socket type into a string. | |
| static const char * | AddressFamilyAsString (int family) | 
| Convert the address family into a string. | |
| Private Types | |
| typedef SOCKET(* | LoopProc )(addrinfo *runp) | 
| Helper function to resolve something to a socket. | |
| Private Member Functions | |
| SOCKET | Resolve (int family, int socktype, int flags, SocketList *sockets, LoopProc func) | 
| Resolve this address into a socket. | |
| Private Attributes | |
| char | hostname [NETWORK_HOSTNAME_LENGTH] | 
| The hostname. | |
| int | address_length | 
| The length of the resolved address. | |
| sockaddr_storage | address | 
| The resolved address. | |
| bool | resolved | 
| Whether the address has been (tried to be) resolved. | |
Wrapper for (un)resolved network addresses; there's no reason to transform a numeric IP to a string and then back again to pass it to functions.
It furthermore allows easier delaying of the hostname lookup.
| 
 | private | 
| 
 | inline | 
Create a network address based on a resolved IP and port.
| address | The IP address with port. | 
| address_length | The length of the address. | 
Definition at line 52 of file address.h.
References hostname.
Referenced by IsInNetmask().
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| 
 | static | 
Convert the address family into a string.
| family | the family to convert | 
Definition at line 427 of file address.cpp.
Referenced by ConnectLoopProc(), ListenLoopProc(), MasterNetworkUDPSocketHandler::Receive_MASTER_ACK_REGISTER(), MasterNetworkUDPSocketHandler::Receive_MASTER_SESSION_KEY(), and Resolve().
| 
 | inline | 
Compare the address of this class with the address of another.
| address | the other address. | 
Definition at line 141 of file address.h.
References address, GetAddressLength(), and GetPort().
Referenced by operator!=(), operator<(), and operator==().
| SOCKET NetworkAddress::Connect | ( | ) | 
Connect to the given address.
Definition at line 325 of file address.cpp.
References ConnectLoopProc(), DEBUG, GetAddressAsString(), and Resolve().
Referenced by TCPConnecter::Connect().
| const sockaddr_storage * NetworkAddress::GetAddress | ( | ) | 
Get the address in its internal representation.
Definition at line 128 of file address.cpp.
References address, IsResolved(), Resolve(), resolved, and ResolveLoopProc().
Referenced by GetAddressAsString(), GetAddressLength(), IsInNetmask(), MasterNetworkUDPSocketHandler::Receive_MASTER_ACK_REGISTER(), MasterNetworkUDPSocketHandler::Receive_MASTER_SESSION_KEY(), ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(), and NetworkUDPSocketHandler::SendPacket().
| void NetworkAddress::GetAddressAsString | ( | char * | buffer, | 
| const char * | last, | ||
| bool | with_family = true | ||
| ) | 
Get the address as a string, e.g.
127.0.0.1:12345.
| buffer | the buffer to write to | 
| last | the last element in the buffer | 
| with_family | whether to add the family (e.g. IPvX). | 
Definition at line 81 of file address.cpp.
References address, GetAddress(), GetHostname(), GetPort(), seprintf(), and strecpy().
Referenced by Connect(), ConnectLoopProc(), GetAddressAsString(), NetworkContentSocketHandler::HandlePacket(), NetworkUDPSocketHandler::HandleUDPPacket(), ListenLoopProc(), NetworkUDPAdvertiseThread(), NetworkUDPQueryMasterServer(), NetworkUDPQueryServer(), ServerNetworkUDPSocketHandler::Receive_CLIENT_GET_NEWGRFS(), ClientNetworkUDPSocketHandler::Receive_SERVER_NEWGRFS(), ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(), NetworkUDPSocketHandler::ReceiveInvalidPacket(), NetworkContentSocketHandler::ReceiveInvalidPacket(), NetworkUDPSocketHandler::ReceivePackets(), and NetworkUDPSocketHandler::SendPacket().
| const char * NetworkAddress::GetAddressAsString | ( | bool | with_family = true | ) | 
Get the address as a string, e.g.
127.0.0.1:12345.
| with_family | whether to add the family (e.g. IPvX). | 
Definition at line 105 of file address.cpp.
References GetAddressAsString(), lastof, and NETWORK_HOSTNAME_LENGTH.
| 
 | inline | 
Get the (valid) length of the address.
Definition at line 114 of file address.h.
References address_length, GetAddress(), and IsResolved().
Referenced by CompareTo(), IsInNetmask(), and NetworkUDPSocketHandler::SendPacket().
| const char * NetworkAddress::GetHostname | ( | ) | 
Get the hostname; in case it wasn't given the IPv4 dotted representation is given.
Definition at line 26 of file address.cpp.
References address, address_length, hostname, and StrEmpty().
Referenced by TCPListenHandler< ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED >::AcceptClient(), GetAddressAsString(), ServerNetworkGameSocketHandler::GetClientIP(), NetworkGameListAddItem(), NetworkUDPQueryServer(), ServerNetworkUDPSocketHandler::Receive_CLIENT_FIND_SERVER(), and ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE().
| uint16 NetworkAddress::GetPort | ( | ) | const | 
Get the port.
Definition at line 39 of file address.cpp.
References address.
Referenced by CompareTo(), GetAddressAsString(), Listen(), NetworkGameWindow::OnClick(), and Resolve().
| bool NetworkAddress::IsFamily | ( | int | family | ) | 
Checks of this address is of the given family.
| family | the family to check against | 
Definition at line 147 of file address.cpp.
References address, IsResolved(), Resolve(), and ResolveLoopProc().
Referenced by NetworkUDPSocketHandler::SendPacket().
| bool NetworkAddress::IsInNetmask | ( | char * | netmask | ) | 
Checks whether this IP address is contained by the given netmask.
| netmask | the netmask in CIDR notation to test against. | 
Definition at line 161 of file address.cpp.
References address, GetAddress(), GetAddressLength(), IsResolved(), and NetworkAddress().
Referenced by TCPListenHandler< ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED >::AcceptClient().
| 
 | inline | 
Check whether the IP address has been resolved already.
Definition at line 128 of file address.h.
References resolved.
Referenced by GetAddress(), GetAddressLength(), IsFamily(), IsInNetmask(), and NetworkUDPQueryServer().
| void NetworkAddress::Listen | ( | int | socktype, | 
| SocketList * | sockets | ||
| ) | 
Make the given socket listen.
| socktype | the type of socket (TCP, UDP, etc) | 
| sockets | the list of sockets to add the sockets to | 
Definition at line 390 of file address.cpp.
References address, address_length, GetPort(), hostname, ListenLoopProc(), Resolve(), and StrEmpty().
| 
 | inline | 
Compare the address of this class with the address of another.
| address | the other address. | 
Definition at line 174 of file address.h.
References CompareTo().
| 
 | inline | 
Compare the address of this class with the address of another.
| address | the other address. | 
Definition at line 183 of file address.h.
References CompareTo().
| 
 | inline | 
Compare the address of this class with the address of another.
| address | the other address. | 
Definition at line 155 of file address.h.
References CompareTo().
| 
 | inline | 
Compare the address of this class with the address of another.
| address | the other address. | 
Definition at line 165 of file address.h.
References CompareTo().
| 
 | private | 
Resolve this address into a socket.
| family | the type of 'protocol' (IPv4, IPv6) | 
| socktype | the type of socket (TCP, UDP, etc) | 
| flags | the flags to send to getaddrinfo | 
| sockets | the list of sockets to add the sockets to | 
| func | the inner working while looping over the address info | 
Definition at line 224 of file address.cpp.
References address, address_length, AddressFamilyAsString(), SmallMap< T, U, S >::Contains(), DEBUG, FS2OTTD(), GetPort(), hostname, lastof, ResolveLoopProc(), seprintf(), SocketTypeAsString(), strecpy(), and StrEmpty().
Referenced by Connect(), GetAddress(), IsFamily(), and Listen().
| void NetworkAddress::SetPort | ( | uint16 | port | ) | 
Set the port.
| port | set the port number. | 
Definition at line 58 of file address.cpp.
References address.
Referenced by NetworkAddress(), and ClientNetworkUDPSocketHandler::Receive_MASTER_RESPONSE_LIST().
| 
 | static | 
Convert the socket type into a string.
| socktype | the socket type to convert | 
Definition at line 412 of file address.cpp.
Referenced by ConnectLoopProc(), ListenLoopProc(), and Resolve().
 1.8.1.2
 1.8.1.2