class SocketAddr

A socket address holder. More...

Full nameTelEngine::SocketAddr
Definition#include <yateclass.h>
InheritsTelEngine::GenObject [public ]
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Types

Public Methods

Public Static Methods

Protected Methods

Protected Members


Detailed Description

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:
valueAddress to copy

explicit  SocketAddr (int family, const void* raw = 0)

SocketAddr

Constructor of a null address

Parameters:
familyFamily of the address to create
rawRaw address data

 SocketAddr (const struct sockaddr* addr, socklen_t len = 0)

SocketAddr

Constructor that stores a copy of an address

Parameters:
addrPointer to the address to store
lenLength 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:
valueAddress to copy

bool  operator== (const SocketAddr& other)

operator==

[const]

Equality comparation operator

Parameters:
otherAddress to compare to

Returns: True if the addresses are equal

inline bool  operator!= (const SocketAddr& other)

operator!=

[const]

Inequality comparation operator

Parameters:
otherAddress 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:
familyFamily 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:
addrPointer to the address to store
lenLength 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:
remoteRemote 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:
valValue 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:
nameHost 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:
newportPort 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:
familyFamily 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:
addrThe address to check

Returns: Address family

bool  stringify (String& buf, struct sockaddr* addr)

stringify

[static]

Convert the host address to a String

Parameters:
bufDestination buffer
addrSocket 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:
bufDestination buffer. It must be large enough to keep the address (4 bytes for IPv4, 16 bytes for IPv6)
hostThe host address
familyAddress 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:
bufDestination buffer. It must be large enough to keep the address (4 bytes for IPv4, 16 bytes for IPv6)
addrThe 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:
addrThe 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:
addrAddress to set
valValue 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:
bufDestination buffer
addrAddress to append
familyAddress 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:
bufDestination buffer
addrAddress to append
portPort to append
familyAddress 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:
addrAddress to append
portPort to append
familyAddress 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:
addrAddress to check
familyAddress 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:
bufSource buffer
addrDestination buffer for address
ifaceOptional 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:
bufSource buffer
addrDestination buffer for address
portDestination port
portPresentSet 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:
familyAddress 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.