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);
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);
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();
512 bool operator==(
const IPV4Address &a)
const;
521 bool operator!=(
const IPV4Address &a)
const;
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) {
693 return ia.getAddress();
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();
923 bool operator==(
const IPV6Address &a)
const;
932 bool operator!=(
const IPV6Address &a)
const;
1082 extern __EXPORT std::ostream& operator<<(std::ostream &os,
const IPV6Address &ia);
1084 inline struct in6_addr getaddress(const
IPV6Address &ia) {
1085 return ia.getAddress();
Class for the function object that validates multicast addresses.
The broadcast address object is used to store the broadcast address for a specific subnet.
IPV4Validator()
Constructor.
virtual ~IPV4Validator()
keeps compilers happy.
This object is used to hold the actual and valid internet address of a specific host machine that wil...
The CIDR class is used to support routing tables and validate address policies.
Classes derived from IPV4Address would require an specific validator to pass to the IPV4Address const...
The network name and address objects are all derived from a common IPV6Address base class.
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 ...
Common C++ thread class and sychronization objects.
virtual ~IPV6MulticastValidator()
Keeps compilers happy...
This object is used to hold the actual and valid internet address of a specific host machine that wil...
Class for the function object that validates multicast addresses.
IPV4Address & operator=(in_addr_t addr)
Allows assignment from the return of functions like inet_addr() or htonl()
A specialization of IPV6Address that provides address validation for multicast addresses.
in_port_t tpport_t
Transport Protocol Ports.
const struct sockaddr * addr(Socket::address &address)
A convenience function to convert a socket address list into a socket address.
size_t getAddressCount() const
Returns the number of internet addresses that an IPV4Address object contains.
IPV6MulticastValidator()
Constructor.
virtual ~IPV6Validator()
Keeps compilers happy.
size_t getAddressCount() const
Returns the number of internet addresses that an IPV6Address object contains.
virtual ~IPV4MulticastValidator()
Keeps compilers happy.
IPV4MulticastValidator()
Constructor.
The CIDR class is used to support routing tables and validate address policies.
IPV6Validator()
Constructor.
IPV4Address & operator=(in_addr_t addr)
Allows assignment from the return of functions like inet_addr() or htonl()
The broadcast address object is used to store the broadcast address for a specific subnet.
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...
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...
GNU Common C++ exception model base classes.