| 460 | |
| 461 | |
| 462 | IPAddress IPAddress::operator ~ () const |
| 463 | { |
| 464 | if (family() == IPv4) |
| 465 | { |
| 466 | IPv4AddressImpl self(this->pImpl()->addr()); |
| 467 | return IPAddress((~self).addr(), sizeof(struct in_addr)); |
| 468 | } |
| 469 | #if defined(POCO_HAVE_IPv6) |
| 470 | else if (family() == IPv6) |
| 471 | { |
| 472 | const IPv6AddressImpl self(pImpl()->addr(), pImpl()->scope()); |
| 473 | const IPv6AddressImpl r = ~self; |
| 474 | return IPAddress(r.addr(), sizeof(struct in6_addr), r.scope()); |
| 475 | } |
| 476 | #endif |
| 477 | else throw Poco::InvalidArgumentException("Invalid or unsupported address family passed to IPAddress()"); |
| 478 | } |
| 479 | |
| 480 | |
| 481 | poco_socklen_t IPAddress::length() const |