44 #ifndef COMMONCPP_ADDRESS_H_ 45 #define COMMONCPP_ADDRESS_H_ 47 #ifndef COMMONCPP_CONFIG_H_ 48 #include <commoncpp/config.h> 51 #ifndef COMMONCPP_THREAD_H_ 55 #ifndef COMMMONCPP_EXCEPTION_H_ 63 #define INET_IPV4_ADDRESS_SIZE 16 64 #define CIDR_IPV4_ADDRESS_SIZE 32 65 #define INET_IPV6_ADDRESS_SIZE 40 66 #define CIDR_IPV6_ADDRESS_SIZE 45 69 #define InetAddress IPV4Address 70 #define InetHostAddress IPV4Host 71 #define InetMaskAddress IPV4Mask 72 #define InetMcastAddress IPV4Multicast 73 #define InetMcastAddressValidator IPV4MulticastValidator 74 #define InetAddrValidator IPV4Validator 75 #define BroadcastAddress IPV4Broadcast 113 operator()(
const in_addr address)
const = 0;
144 void operator()(
const in_addr address)
const __OVERRIDE;
157 struct in_addr netmask, network;
159 unsigned getMask(
const char *cp)
const;
166 inline struct in_addr getNetwork(void) const {
175 inline struct in_addr getNetmask(void) const {
184 struct in_addr getBroadcast(void) const;
192 void set(
const char *cidr);
211 IPV4Cidr(IPV4Cidr &);
219 bool isMember(
const struct sockaddr *saddr)
const;
227 bool isMember(
const struct in_addr &inaddr)
const;
229 inline bool operator==(
const struct sockaddr *a)
const {
233 inline bool operator==(
const struct in_addr &a)
const {
237 inline bool operator!=(
const struct sockaddr *a)
const {
241 inline bool operator!=(
const struct in_addr &a)
const {
257 struct in6_addr netmask, network;
259 unsigned getMask(
const char *cp)
const;
266 inline struct in6_addr getNetwork(void) const {
275 inline struct in6_addr getNetmask(void) const {
284 struct in6_addr getBroadcast(void) const;
292 void set(
const char *cidr);
311 IPV6Cidr(IPV6Cidr &);
319 bool isMember(
const struct sockaddr *saddr)
const;
327 bool isMember(
const struct in6_addr &inaddr)
const;
329 inline bool operator==(
const struct sockaddr *sa)
const {
333 inline bool operator==(
const struct in6_addr &a)
const {
337 inline bool operator!=(
const struct sockaddr *sa)
const {
338 return !isMember(sa);
341 inline bool operator!=(
const struct in6_addr &a)
const {
370 const InetAddrValidator *validator;
373 struct in_addr * ipaddr;
375 mutable char* hostname;
376 #if defined(_MSWINDOWS_) 388 bool setIPAddress(
const char *host);
396 void setAddress(
const char *host);
406 IPV4Address(
const InetAddrValidator *validator = NULL);
416 IPV4Address(
struct in_addr
addr,
const InetAddrValidator *validator = NULL);
428 IPV4Address(
const char *address,
const InetAddrValidator *validator = NULL);
446 const char *getHostname(
void)
const;
455 bool isInetAddress(
void)
const;
464 struct in_addr getAddress(void) const;
477 struct in_addr getAddress(size_t i) const;
496 inline operator bool()
const {
497 return isInetAddress();
500 inline bool operator!()
const {
501 return !isInetAddress();
567 return IPV4Address::operator =(addr);
612 return IPV4Address::operator =(addr);
690 extern __EXPORT std::ostream& operator<<(std::ostream &os,
const IPV4Address &ia);
692 inline struct in_addr getaddress(const IPV4Address &ia) {
729 virtual void operator()(
const in6_addr address)
const = 0;
760 void operator()(
const in6_addr address)
const __OVERRIDE;
788 struct in6_addr * ipaddr;
790 mutable char* hostname;
791 #if defined(_MSWINDOWS_) 803 bool setIPAddress(
const char *host);
811 void setAddress(
const char *host);
861 const char *getHostname(
void)
const;
870 bool isInetAddress(
void)
const;
879 struct in6_addr getAddress(void) const;
892 struct in6_addr getAddress(size_t i) const;
907 inline operator bool ()
const {
908 return isInetAddress();
911 inline bool operator!()
const {
912 return !isInetAddress();
1082 extern __EXPORT std::ostream& operator<<(std::ostream &os,
const IPV6Address &ia);
1084 inline struct in6_addr getaddress(const IPV6Address &ia) {
This object is used to hold the actual and valid internet address of a specific host machine that wil...
struct in6_addr getAddress(void) const
Provide a low level system usable struct in_addr object from the contents of IPV6Address.
virtual ~IPV4Validator()
keeps compilers happy.
The network name and address objects are all derived from a common IPV6Address base class...
The CIDR class is used to support routing tables and validate address policies.
size_t getAddressCount() const
Returns the number of internet addresses that an IPV4Address object contains.
Classes derived from IPV4Address would require an specific validator to pass to the IPV4Address const...
IPV4Address & operator=(in_addr_t addr)
Allows assignment from the return of functions like inet_addr() or htonl()
IPV6Validator()
Constructor.
A specialization of IPV4Address that provides address validation for multicast addresses.
Internet addresses used specifically as masking addresses (such as " 255.255.255.0") are held in the ...
The CIDR class is used to support routing tables and validate address policies.
size_t getAddressCount() const
Returns the number of internet addresses that an IPV6Address object contains.
Common C++ thread class and sychronization objects.
This object is used to hold the actual and valid internet address of a specific host machine that wil...
in_port_t tpport_t
Transport Protocol Ports.
Class for the function object that validates multicast addresses.
virtual ~IPV6Validator()
Keeps compilers happy.
virtual ~IPV6MulticastValidator()
Keeps compilers happy...
The broadcast address object is used to store the broadcast address for a specific subnet...
IPV4MulticastValidator()
Constructor.
The network name and address objects are all derived from a common IPV4Address base class...
The Mutex Counter is a counter variable which can safely be incremented or decremented by multiple th...
struct in_addr getAddress(void) const
Provide a low level system usable struct in_addr object from the contents of IPV4Address.
A specialization of IPV6Address that provides address validation for multicast addresses.
GNU Common C++ exception model base classes.
Internet addresses used specifically as masking addresses (such as " 255.255.255.0") are held in the ...
Classes derived from IPV6Address would require an specific validator to pass to the IPV6Address const...
virtual ~IPV4MulticastValidator()
Keeps compilers happy.
The broadcast address object is used to store the broadcast address for a specific subnet...
IPV4Validator()
Constructor.
IPV4Address & operator=(in_addr_t addr)
Allows assignment from the return of functions like inet_addr() or htonl()
Class for the function object that validates multicast addresses.
const struct sockaddr * addr(Socket::address &address)
A convenience function to convert a socket address list into a socket address.
IPV6MulticastValidator()
Constructor.