kdecore Library API Documentation

KNetwork::KIpAddress Class Reference

An IP address. More...

#include <ksocketaddress.h>

Collaboration diagram for KNetwork::KIpAddress:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 KIpAddress ()
 KIpAddress (const KIpAddress &other)
 KIpAddress (const QString &addr)
 KIpAddress (const char *addr)
 KIpAddress (const void *addr, int version=4)
 KIpAddress (Q_UINT32 ip4addr)
 ~KIpAddress ()
KIpAddressoperator= (const KIpAddress &other)
bool operator== (const KIpAddress &other) const
bool compare (const KIpAddress &other, bool checkMapped=true) const
int version () const
bool isIPv4Addr () const
bool isIPv6Addr () const
bool setAddress (const QString &address)
bool setAddress (const char *address)
bool setAddress (const void *raw, int version=4)
QString toString () const
const void * addr () const
Q_UINT32 IPv4Addr (bool convertMapped=true) const
bool isUnspecified () const
bool isLocalhost () const
bool isLoopback () const
bool isClassA () const
bool isClassB () const
bool isClassC () const
bool isClassD () const
bool isMulticast () const
bool isLinkLocal () const
bool isSiteLocal () const
bool isGlobal () const
bool isV4Mapped () const
bool isV4Compat () const
bool isMulticastNodeLocal () const
bool isMulticastLinkLocal () const
bool isMulticastSiteLocal () const
bool isMulticastOrgLocal () const
bool isMulticastGlobal () const

Static Public Attributes

const KIpAddress localhostV4
const KIpAddress anyhostV4
const KIpAddress localhostV6
const KIpAddress anyhostV6

Protected Attributes

Q_UINT32 m_data [4]
char m_version

Detailed Description

An IP address.

This class represents one IP address, version 4 or 6. This is only the address, not including port information or other data.

It is not a good programming practice to create address from objects like this. Instead, prefer a more thorough function like KResolver::resolve, which also handle extra information like scope ids.

This is a light-weight class. Most of the member functions are inlined and there are no virtual functions. This object's size should be less than 20 bytes. Also note that there is no sharing of data.

Author:
Thiago Macieira <thiago.macieira@kdemail.net>

Definition at line 61 of file ksocketaddress.h.


Constructor & Destructor Documentation

KNetwork::KIpAddress::KIpAddress  )  [inline]
 

Default constructor.

Creates an empty address. It defaults to IP version 4. Definition at line 68 of file ksocketaddress.h.

KNetwork::KIpAddress::KIpAddress const KIpAddress other  )  [inline]
 

Copy constructor.

Copies the data from the other object.

Data is not shared.

Parameters:
other the other
Definition at line 79 of file ksocketaddress.h.

KNetwork::KIpAddress::KIpAddress const QString addr  )  [inline]
 

Creates an object from the given string representation.

The IP version is guessed from the address format.

Parameters:
addr the address
Definition at line 89 of file ksocketaddress.h.

References setAddress().

KNetwork::KIpAddress::KIpAddress const char *  addr  )  [inline]
 

Creates an object from the given string representation.

The IP version is guessed from the address format.

Parameters:
addr the address
Definition at line 99 of file ksocketaddress.h.

References setAddress().

KNetwork::KIpAddress::KIpAddress const void *  addr,
int  version = 4
[inline]
 

Creates an object from the given raw data and IP version.

Parameters:
addr the raw data
version the IP version (4 or 6)
Definition at line 108 of file ksocketaddress.h.

References setAddress().

KNetwork::KIpAddress::KIpAddress Q_UINT32  ip4addr  )  [inline]
 

This is a convenience constructor.

Constructs an object from the given IPv4 address in the form of an integer.

Note: do not write code to depend on IPv4 addresses being integer types. Instead, treat them as a special type, like a KIpAddress or the system's in_addr.

Parameters:
ip4addr the IPv4 address
Definition at line 121 of file ksocketaddress.h.

References setAddress().

KNetwork::KIpAddress::~KIpAddress  )  [inline]
 

Destructor.

This frees resources associated with this object.

Note: destructor is non-virtual. The compiler will happily optimise it out of the way. Definition at line 130 of file ksocketaddress.h.


Member Function Documentation

KIpAddress & KIpAddress::operator= const KIpAddress other  ) 
 

Copy operator.

Copies the data from the other object into this one.

Parameters:
other the object to copy
Definition at line 86 of file ksocketaddress.cpp.

References m_data, and m_version.

bool KNetwork::KIpAddress::operator== const KIpAddress other  )  const [inline]
 

Returns true if the two addresses match.

This function performs a v4-mapped check.

See also:
compare
Definition at line 147 of file ksocketaddress.h.

References compare().

bool KIpAddress::compare const KIpAddress other,
bool  checkMapped = true
const
 

Compares this address against the other, supplied one and return true if they match.

The checkMapped parameter controls whether a check for an IPv6 v4-mapped address will be performed.

An IPv6 v4-mapped address is an IPv6 address that is, for all purposes, equivalent to an IPv4 one. The default behaviour of this function is to take that into account. If you want a strict matching, pass false to the checkMapped parameter.

Parameters:
other the other IP address
checkMapped whether v4-mapped addresses will be taken into account
Definition at line 95 of file ksocketaddress.cpp.

References m_data, and m_version.

Referenced by operator==().

int KNetwork::KIpAddress::version  )  const [inline]
 

Retrieves the IP version in this object.

Returns:
the version: 4 or 6
Definition at line 170 of file ksocketaddress.h.

Referenced by isClassA(), isClassB(), isClassC(), isClassD(), isGlobal(), isIPv4Addr(), isIPv6Addr(), isLinkLocal(), isLocalhost(), isMulticast(), isMulticastGlobal(), isMulticastLinkLocal(), isMulticastNodeLocal(), isMulticastOrgLocal(), isMulticastSiteLocal(), isSiteLocal(), isUnspecified(), isV4Compat(), and isV4Mapped().

bool KNetwork::KIpAddress::isIPv4Addr  )  const [inline]
 

Returns true if this is an IPv4 address.

Definition at line 176 of file ksocketaddress.h.

References version().

bool KNetwork::KIpAddress::isIPv6Addr  )  const [inline]
 

Returns true if this is an IPv6 address.

Definition at line 182 of file ksocketaddress.h.

References version().

bool KIpAddress::setAddress const QString address  ) 
 

Sets the address to the given string representation.

Returns:
true if the address was successfully parsed; otherwise returns false and leaves the object unchanged.
Definition at line 128 of file ksocketaddress.cpp.

Referenced by KIpAddress(), and setAddress().

bool KIpAddress::setAddress const char *  address  ) 
 

Sets the address to the given string representation.

Returns:
true if the address was successfully parsed; otherwise returns false and leaves the object unchanged.
Definition at line 165 of file ksocketaddress.cpp.

References setAddress().

bool KIpAddress::setAddress const void *  raw,
int  version = 4
 

Sets the address to the given raw binary representation.

Parameters:
raw a pointer to the raw binary data
version the IP version
Returns:
true if the address was successfully parsed; otherwise returns false and leaves the object unchanged.
Definition at line 171 of file ksocketaddress.cpp.

QString KIpAddress::toString  )  const
 

Returns the address as a string.

Definition at line 188 of file ksocketaddress.cpp.

const void* KNetwork::KIpAddress::addr  )  const [inline]
 

Returns a pointer to binary raw data representing the address.

Definition at line 219 of file ksocketaddress.h.

Referenced by isLinkLocal(), isMulticast(), isMulticastGlobal(), isMulticastLinkLocal(), isMulticastNodeLocal(), isMulticastOrgLocal(), isMulticastSiteLocal(), isSiteLocal(), isV4Compat(), and isV4Mapped().

Q_UINT32 KNetwork::KIpAddress::IPv4Addr bool  convertMapped = true  )  const [inline]
 

This is a convenience function.

Returns the IPv4 address in a 32-bit integer. The result is only valid if isIPv4Addr returns true. Alternatively, if the contained IPv6 address is a v4-mapped one and the convertMapped parameter is true, the result will also be valid.

Note: you should not treat IP addresses as integers. Instead, use types defined for that purpose, such as KIpAddress or the system's in_addr type.

Bug:
Check if byte ordering is done right
Definition at line 235 of file ksocketaddress.h.

References isV4Mapped().

Referenced by isClassA(), isClassB(), isClassC(), and isClassD().

bool KNetwork::KIpAddress::isUnspecified  )  const [inline]
 

Returns true if this is the IPv4 or IPv6 unspecified address.

Definition at line 245 of file ksocketaddress.h.

References anyhostV4, anyhostV6, and version().

bool KNetwork::KIpAddress::isLocalhost  )  const [inline]
 

Returns true if this is either the IPv4 or the IPv6 localhost address.

Definition at line 251 of file ksocketaddress.h.

References localhostV4, localhostV6, and version().

Referenced by isLoopback(), and isV4Compat().

bool KNetwork::KIpAddress::isLoopback  )  const [inline]
 

This is an alias for isLocalhost.

Definition at line 257 of file ksocketaddress.h.

References isLocalhost().

bool KNetwork::KIpAddress::isClassA  )  const [inline]
 

Returns true if this is an IPv4 class A address, i.e., from 0.0.0.0 to 127.255.255.255.

This function does not test for v4-mapped addresses. Definition at line 266 of file ksocketaddress.h.

References IPv4Addr(), and version().

bool KNetwork::KIpAddress::isClassB  )  const [inline]
 

Returns true if this is an IPv4 class B address, i.e., one from 128.0.0.0 to 191.255.255.255.

This function does not test for v4-mapped addresses. Definition at line 275 of file ksocketaddress.h.

References IPv4Addr(), and version().

bool KNetwork::KIpAddress::isClassC  )  const [inline]
 

Returns true if this is an IPv4 class C address, i.e., one from 192.0.0.0 to 223.255.255.255.

This function does not test for v4-mapped addresses. Definition at line 284 of file ksocketaddress.h.

References IPv4Addr(), and version().

bool KNetwork::KIpAddress::isClassD  )  const [inline]
 

Returns true if this is an IPv4 class D (a.k.a.

multicast) address.

Note: this function is not the same as isMulticast. isMulticast also tests for IPv6 multicast addresses. Definition at line 293 of file ksocketaddress.h.

References IPv4Addr(), and version().

Referenced by isMulticast().

bool KNetwork::KIpAddress::isMulticast  )  const [inline]
 

Returns true if this is a multicast address, be it IPv4 or IPv6.

Definition at line 299 of file ksocketaddress.h.

References addr(), isClassD(), and version().

Referenced by isGlobal(), isMulticastGlobal(), isMulticastLinkLocal(), isMulticastNodeLocal(), isMulticastOrgLocal(), and isMulticastSiteLocal().

bool KNetwork::KIpAddress::isLinkLocal  )  const [inline]
 

Returns true if this is an IPv6 link-local address.

Definition at line 309 of file ksocketaddress.h.

References addr(), and version().

Referenced by isGlobal().

bool KNetwork::KIpAddress::isSiteLocal  )  const [inline]
 

Returns true if this is an IPv6 site-local address.

Definition at line 320 of file ksocketaddress.h.

References addr(), and version().

Referenced by isGlobal().

bool KNetwork::KIpAddress::isGlobal  )  const [inline]
 

Returns true if this is a global IPv6 address.

Definition at line 331 of file ksocketaddress.h.

References isLinkLocal(), isMulticast(), isSiteLocal(), and version().

bool KNetwork::KIpAddress::isV4Mapped  )  const [inline]
 

Returns true if this is a v4-mapped IPv6 address.

Definition at line 337 of file ksocketaddress.h.

References addr(), and version().

Referenced by IPv4Addr().

bool KNetwork::KIpAddress::isV4Compat  )  const [inline]
 

Returns true if this is a v4-compat IPv6 address.

Definition at line 349 of file ksocketaddress.h.

References addr(), isLocalhost(), and version().

bool KNetwork::KIpAddress::isMulticastNodeLocal  )  const [inline]
 

Returns true if this is an IPv6 node-local multicast address.

Definition at line 359 of file ksocketaddress.h.

References addr(), isMulticast(), and version().

bool KNetwork::KIpAddress::isMulticastLinkLocal  )  const [inline]
 

Returns true if this is an IPv6 link-local multicast address.

Definition at line 365 of file ksocketaddress.h.

References addr(), isMulticast(), and version().

bool KNetwork::KIpAddress::isMulticastSiteLocal  )  const [inline]
 

Returns true if this is an IPv6 site-local multicast address.

Definition at line 371 of file ksocketaddress.h.

References addr(), isMulticast(), and version().

bool KNetwork::KIpAddress::isMulticastOrgLocal  )  const [inline]
 

Returns true if this is an IPv6 organisational-local multicast address.

Definition at line 377 of file ksocketaddress.h.

References addr(), isMulticast(), and version().

bool KNetwork::KIpAddress::isMulticastGlobal  )  const [inline]
 

Returns true if this is an IPv6 global multicast address.

Definition at line 383 of file ksocketaddress.h.

References addr(), isMulticast(), and version().


Member Data Documentation

const KIpAddress KIpAddress::localhostV4 [static]
 

localhost in IPv4 (127.0.0.1)

Referenced by isLocalhost().

const KIpAddress KIpAddress::anyhostV4 [static]
 

the any host or undefined address in IPv4 (0.0.0.0)

Referenced by isUnspecified().

const KIpAddress KIpAddress::localhostV6 [static]
 

localhost in IPv6 (::1)

Referenced by isLocalhost().

const KIpAddress KIpAddress::anyhostV6 [static]
 

the any host or undefined address in IPv6 (::)

Referenced by isUnspecified().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for kdecore Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 17 11:26:54 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003