|
|
Wrapper class to keep a socket address
| enum Family { Unknown = AF_UNSPEC, IPv4 = AF_INET, AfMax = AF_MAX, AfUnsupported = AfMax, IPv6 = AF_INET6, IPv6 = AfUnsupported + 1, Unix = AF_UNIX, Unix = AfUnsupported + 2, } | Family |
Known address families
| inline SocketAddr ()
| SocketAddr |
Default constructor of an empty address
| inline SocketAddr (const SocketAddr& value)
| SocketAddr |
Copy constructor
Parameters:
| value | Address to copy |
| explicit SocketAddr (int family, const void* raw = 0)
| SocketAddr |
Constructor of a null address
Parameters:
| family | Family of the address to create |
| raw | Raw address data |
| SocketAddr (const struct sockaddr* addr, socklen_t len = 0)
| SocketAddr |
Constructor that stores a copy of an address
Parameters:
| addr | Pointer to the address to store |
| len | Length of the stored address, zero to use default |
| ~SocketAddr ()
| ~SocketAddr |
[virtual]
Destructor that frees and zeroes out everything
| inline SocketAddr& operator= (const SocketAddr& value)
| operator= |
Assignment operator
Parameters:
| value | Address to copy |
| bool operator== (const SocketAddr& other)
| operator== |
[const]
Equality comparation operator
Parameters:
| other | Address to compare to |
Returns: True if the addresses are equal
| inline bool operator!= (const SocketAddr& other)
| operator!= |
[const]
Inequality comparation operator
Parameters:
| other | Address to compare to |
Returns: True if the addresses are different
| void clear ()
| clear |
Clears up the address, frees the memory
| bool assign (int family)
| assign |
Assigns an empty address of a specific type
Parameters:
| family | Family of the address to create |
Returns: True if the address family is supported
| void assign (const struct sockaddr* addr, socklen_t len = 0)
| assign |
Assigns a new address
Parameters:
| addr | Pointer to the address to store |
| len | Length of the stored address, zero to use default |
| bool local (const SocketAddr& remote)
| local |
Attempt to guess a local address that will be used to reach a remote one
Parameters:
| remote | Remote address to reach |
Returns: True if guessed an address, false if failed
| inline bool valid ()
| valid |
[const]
Check if a non-null address is held
Returns: True if a valid address is held, false if null
| inline bool null ()
| null |
[const]
Check if a null address is held
Returns: True if a null address is held
| inline int family ()
| family |
[const]
Get the family of the stored address
Returns: Address family of the stored address or zero (AF_UNSPEC)
| inline const char* familyName ()
| familyName |
Retrieve address family name
Returns: Address family name
| inline unsigned int scopeId ()
| scopeId |
[const]
Retrieve the sin6_scope_id value of an IPv6 address
Returns: The requested value (it may be 0), 0 if not available
| inline bool scopeId (unsigned int val)
| scopeId |
Set the sin6_scope_id value of an IPv6 address
Parameters:
| val | Value to set |
Returns: True on success, false if not available
| inline const String& host ()
| host |
[const]
Get the host of this address
Returns: Host name as String
| inline const String& addr ()
| addr |
[const]
Get the host and port of this address
Returns: Address String (host:port)
| bool host (const String& name)
| host |
[virtual]
Set the hostname of this address. Guess address family if not initialized
Parameters:
| name | Host to set |
Returns: True if new host set, false if name could not be parsed
| int port ()
| port |
[const]
Get the port of the stored address (if supported)
Returns: Port number of the socket address or zero
| bool port (int newport)
| port |
Set the port of the stored address (if supported)
Parameters:
| newport | Port number to set in the socket address |
Returns: True if new port set, false if not supported
| inline struct sockaddr* address ()
| address |
[const]
Get the contained socket address
Returns: A pointer to the socket address
| inline socklen_t length ()
| length |
[const]
Get the length of the address
Returns: Length of the stored address
| inline bool isNullAddr ()
| isNullAddr |
[const]
Check if this address is empty or null
Returns: True if the address is empty or '0.0.0.0' (IPv4) or '::' IPv6
| bool supports (int family)
| supports |
[static]
Check if an address family is supported by the library
Parameters:
| family | Family of the address to check |
Returns: True if the address family is supported
| int family (const String& addr)
| family |
[static]
Retrieve the family of an address
Parameters:
| addr | The address to check |
Returns: Address family
| bool stringify (String& buf, struct sockaddr* addr)
| stringify |
[static]
Convert the host address to a String
Parameters:
| buf | Destination buffer |
| addr | Socket address |
Returns: True on success, false if address family is not supported
| inline int unStringify (uint8_t* buf, const String& host,
int family = Unknown)
| unStringify |
[static]
Put a host address to a buffer
Parameters:
| buf | Destination buffer. It must be large enough to keep the address (4 bytes for IPv4, 16 bytes for IPv6) |
| host | The host address |
| family | Address family, set it to Unknown to detect |
Returns: Address family, Unknown on failure
| int copyAddr (uint8_t* buf, struct sockaddr* addr)
| copyAddr |
[static]
Copy a host address to a buffer
Parameters:
| buf | Destination buffer. It must be large enough to keep the address (4 bytes for IPv4, 16 bytes for IPv6) |
| addr | The host address |
Returns: Address family, Unknown on failure
| inline unsigned int scopeId (struct sockaddr* addr)
| scopeId |
[static]
Retrieve the scope id value of an IPv6 address
Parameters:
| addr | The address |
Returns: The requested value (it may be 0), 0 if not available
| inline bool scopeId (struct sockaddr* addr, unsigned int val)
| scopeId |
[static]
Set the scope id value of an IPv6 address
Parameters:
| addr | Address to set |
| val | Value to set |
Returns: True on success, false if not available
| String& appendAddr (String& buf, const String& addr, int family = Unknown)
| appendAddr |
[static]
Append an address to a buffer
Parameters:
| buf | Destination buffer |
| addr | Address to append |
| family | Address family, set it to Unknown to detect |
Returns: Buffer address
| inline String& appendTo (String& buf, const String& addr, int port,
int family = Unknown)
| appendTo |
[static]
Append an address to a buffer in the form addr:port
Parameters:
| buf | Destination buffer |
| addr | Address to append |
| port | Port to append |
| family | Address family, set it to Unknown to detect |
Returns: Buffer address
| inline String appendTo (const String& addr, int port, int family = Unknown)
| appendTo |
[static]
Append an address to a buffer in the form addr:port
Parameters:
| addr | Address to append |
| port | Port to append |
| family | Address family, set it to Unknown to detect |
Returns: A String with concatenated address and port
| bool isNullAddr (const String& addr, int family = Unknown)
| isNullAddr |
[static]
Check if an address is empty or null
Parameters:
| addr | Address to check |
| family | Address family, set it to Unknown to detect |
Returns: True if the address is empty or '0.0.0.0' (IPv4) or '::' IPv6
| void splitIface (const String& buf, String& addr, String* iface = 0)
| splitIface |
[static]
Split an interface from address An interface may be present in addr after a percent char (e.g. fe80::23%eth0) It is safe call this method with the same destination and source string
Parameters:
| buf | Source buffer |
| addr | Destination buffer for address |
| iface | Optional pointer to be filled with interface name |
| void split (const String& buf, String& addr, int& port, bool portPresent = false)
| split |
[static]
Split an address into ip/port. Handled formats: addr, addr:port, [addr], [addr]:port It is safe call this method with the same destination and source string
Parameters:
| buf | Source buffer |
| addr | Destination buffer for address |
| port | Destination port |
| portPresent | Set it to true if the port is always present after the last ':'. This will handle IPv6 addresses without square brackets and port present (e.g. fe80::23:5060 will split into addr=fe80::23 and port=5060) |
| inline const char* lookupFamily (int family)
| lookupFamily |
[static]
Retrieve address family name
Parameters:
| family | Address family to retrieve |
Returns: Address family name
| const String& ipv4NullAddr ()
| ipv4NullAddr |
[static]
Retrieve IPv4 null address
Returns: IPv4 null address (0.0.0.0)
| const String& ipv6NullAddr ()
| ipv6NullAddr |
[static]
Retrieve IPv6 null address
Returns: IPv6 null address (::)
| const TokenDict* dictFamilyName ()
| dictFamilyName |
[static]
Retrieve the family name dictionary
Returns: Pointer to family name dictionary
| void stringify ()
| stringify |
[protected virtual]
Convert the host address to a String stored in m_host
| void updateAddr ()
| updateAddr |
[protected const virtual]
Store host:port in m_addr
| struct sockaddr* m_address | m_address |
[protected]
| socklen_t m_length | m_length |
[protected]
| String m_host | m_host |
[protected]
| mutable String m_addr | m_addr |
[protected]
| Generated by: paulc on bussard on Thu Jul 24 18:41:02 2014, using kdoc 2.0a54. |