E-MailRelay

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Member Functions | List of all members
GNet::Address Class Reference

The GNet::Address class encapsulates a TCP/UDP transport address. More...

`#include <gaddress.h>`

## Classes
class | Family
| A type-safe enumerator for IP address family. More...

## Public Member Functions
| Address (const Address &)
| Copy constructor.
| Address (const AddressStorage &)
| Constructor taking a storage object.
| Address (const sockaddr *addr, socklen_t len)
| Constructor using a given sockaddr. More...
| Address (Family, unsigned int port)
| Constructor for a wildcard INADDR_ANY address with the given port number. More...
| Address (const std::string &display_string)
| Constructor taking a string originally obtained from displayString(). More...
| Address (const std::string &ip, unsigned int port)
| Constructor taking an ip-address and a port number. More...
| ~Address ()
| Destructor.
void | operator= (const Address &addr)
| Assignment operator.
const sockaddr * | address () const
| Returns the sockaddr address. More...
sockaddr * | address ()
| This is a non-const version of address() for compiling on systems which are not properly const-clean. More...
socklen_t | length () const
| Returns the size of the sockaddr address. See address().
std::string | displayString () const
| Returns a string which represents the transport address for debugging and diagnostics purposes. More...
std::string | hostPartString () const
| Returns a string which represents the network address for debugging and diagnostics purposes. More...
unsigned int | port () const
| Returns port part of the address.
int | domain () const
| Returns the address 'domain', eg. PF_INET.
unsigned long | scopeId (unsigned long default_=0UL) const
| Returns the scope-id. More...
bool | sameHostPart (const Address &other) const
| Returns true if the two addresses have the same host part (ie. More...
void | setPort (unsigned int port)
| Sets the port number. More...
G::StringArray | wildcards () const
| Returns an ordered list of wildcard strings that match this address. More...
bool | isLoopback () const
| Returns true if this is a loopback address.
bool | isLocal (std::string &reason) const
| Returns true if this seems to be a local address (for some definition of 'local'). More...
Family | family () const
| Returns the address family.
bool | operator== (const Address &) const
| Comparison operator.
bool | operator!= (const Address &) const
| Comparison operator.

## Static Public Member Functions
static bool | supports (Family)
| Returns true if the implementation supports the given address family.
static Address | defaultAddress ()
| Returns a default address, being the IPv4 wildcard address with a zero port number. More...
static Address | loopback (Family, unsigned int port=0U)
| Returns a loopback address.
static bool | validPort (unsigned int n)
| Returns true if the port number is within the valid range. More...
static bool | validString (const std::string &display_string, std::string *reason=nullptr)
| Returns true if the transport-address display string is valid. More...
static bool | validStrings (const std::string &ip, const std::string &port_string, std::string *reason=nullptr)
| Returns true if the combined network-address string and port string is valid. More...
static bool | validData (const sockaddr *, socklen_t len)
| Returns true if the sockaddr data is valid. More...

## Detailed Description

The GNet::Address class encapsulates a TCP/UDP transport address.

The address is exposed as a 'sockaddr' structure for low-level socket operations.

A double pimple pattern is used for the implementation; this class instantiates either a GNet::Address4 implementation sub-object or a GNet::Address6 sub-object depending on the address family, and forwards its method calls directly to the one instantiated sub-object. In an IPv4-only build the GNet::Address6 is forward-declared but not defined and all methods are forwarded to the GNet::Address4 sub-object.

See also
  GNet::Resolver

Definition at line 54 of file gaddress.h.

## Constructor & Destructor Documentation

GNet::Address::Address | ( | const sockaddr * | addr,
|  | socklen_t | len
| ) |  |

Constructor using a given sockaddr.

Throws an exception if an invalid structure. See also: validData()

Definition at line 57 of file gaddress_ipv4.cpp.

GNet::Address::Address | ( | Family | f,
|  | unsigned int | port
| ) |  |

Constructor for a wildcard INADDR_ANY address with the given port number.

Throws an exception if an invalid port number.

See also
  validPort()

Definition at line 46 of file gaddress_ipv4.cpp.

GNet::Address::Address | ( | const std::string & | display_string | ) |
| explicit

Constructor taking a string originally obtained from displayString().

Throws an exception if an invalid string. See also validString().

Definition at line 62 of file gaddress_ipv4.cpp.

GNet::Address::Address | ( | const std::string & | ip,
|  | unsigned int | port
| ) |  |

Constructor taking an ip-address and a port number.

Throws an exception if an invalid string.

Definition at line 67 of file gaddress_ipv4.cpp.

## Member Function Documentation

const sockaddr * GNet::Address::address | ( |  | ) | const

Returns the sockaddr address.

Typically used when making socket system calls. Never returns nullptr.

Definition at line 154 of file gaddress_ipv4.cpp.

sockaddr * GNet::Address::address | ( |  | ) |

This is a non-const version of address() for compiling on systems which are not properly const-clean.

Definition at line 149 of file gaddress_ipv4.cpp.

GNet::Address GNet::Address::defaultAddress | ( |  | ) |
| static

Returns a default address, being the IPv4 wildcard address with a zero port number.

Definition at line 41 of file gaddress_ipv4.cpp.

std::string GNet::Address::displayString | ( |  | ) | const

Returns a string which represents the transport address for debugging and diagnostics purposes.

Definition at line 129 of file gaddress_ipv4.cpp.

std::string GNet::Address::hostPartString | ( |  | ) | const

Returns a string which represents the network address for debugging and diagnostics purposes.

Definition at line 134 of file gaddress_ipv4.cpp.

bool GNet::Address::isLocal | ( | std::string & | reason | ) | const

Returns true if this seems to be a local address (for some definition of 'local').

Returns an explanation by reference otherwise.

Definition at line 109 of file gaddress_ipv4.cpp.

bool GNet::Address::sameHostPart | ( | const Address & | other | ) | const

Returns true if the two addresses have the same host part (ie.

the network address, ignoring the port number).

Definition at line 124 of file gaddress_ipv4.cpp.

unsigned long GNet::Address::scopeId | ( | unsigned long | default_ = `0UL` | ) | const

Returns the scope-id.

Returns the default if scope-ids are not supported by the underlying address type.

Definition at line 169 of file gaddress_ipv4.cpp.

void GNet::Address::setPort | ( | unsigned int | port | ) |

Sets the port number.

Throws an exception if an invalid port number (ie. too big).

Definition at line 99 of file gaddress_ipv4.cpp.

bool GNet::Address::validData | ( | const sockaddr * | addr,
|  | socklen_t | len
| ) |  |
| static

Returns true if the sockaddr data is valid.

This can be used to avoid exceptions from the relevant constructor.

Definition at line 179 of file gaddress_ipv4.cpp.

bool GNet::Address::validPort | ( | unsigned int | n | ) |
| static

Returns true if the port number is within the valid range.

This can be used to avoid exceptions from the relevant constructors.

Definition at line 174 of file gaddress_ipv4.cpp.

bool GNet::Address::validString | ( | const std::string & | display_string,
|  | std::string * | reason = `nullptr`
| ) |  |
| static

Returns true if the transport-address display string is valid.

This can be used to avoid exceptions from the relevant constructor.

Definition at line 139 of file gaddress_ipv4.cpp.

bool GNet::Address::validStrings | ( | const std::string & | ip,
|  | const std::string & | port_string,
|  | std::string * | reason = `nullptr`
| ) |  |
| static

Returns true if the combined network-address string and port string is valid.

This can be used to avoid exceptions from the relevant constructor.

Definition at line 144 of file gaddress_ipv4.cpp.

G::StringArray GNet::Address::wildcards | ( |  | ) | const

Returns an ordered list of wildcard strings that match this address.

The fully-address-specific string (eg. "192.168.0.1") comes first, and the most general match-all wildcard like "*.*.*.*" or "128.0.0.0/1" comes last.

Definition at line 194 of file gaddress_ipv4.cpp.

The documentation for this class was generated from the following files:

- /tmp/slackrepo/SBo/slackrepo.S3SYfd/build_emailrelay/emailrelay-2.0.1/src/gnet/gaddress.h
- /tmp/slackrepo/SBo/slackrepo.S3SYfd/build_emailrelay/emailrelay-2.0.1/src/gnet/gaddress_ipv4.cpp
- /tmp/slackrepo/SBo/slackrepo.S3SYfd/build_emailrelay/emailrelay-2.0.1/src/gnet/gaddress_ipv6.cpp