X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FINetAddressing.cci;h=8af052f7a420905b66c6140f782e7990e4dbec2a;hb=9a988902090d28007578e93bffd809f6bd913155;hp=688cbb58586b197413e804502cc2cf9cc68bc7cf;hpb=a4911c1fd3f53dc2a7bda6c1d2b00bdc4b864cff;p=senf.git diff --git a/Socket/INetAddressing.cci b/Socket/INetAddressing.cci index 688cbb5..8af052f 100644 --- a/Socket/INetAddressing.cci +++ b/Socket/INetAddressing.cci @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -30,6 +30,9 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +// senf::INet4Address + prefix_ senf::INet4Address::INet4Address() { clear(); @@ -48,7 +51,7 @@ prefix_ senf::INet4Address::INet4Address(std::string address) prefix_ bool senf::INet4Address::operator==(INet4Address const & other) const { - return addr_.sin_port == other.addr_.sin_port && + return addr_.sin_port == other.addr_.sin_port && addr_.sin_addr.s_addr == other.addr_.sin_addr.s_addr; } @@ -88,11 +91,155 @@ prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4Address const & return os; } +/////////////////////////////////////////////////////////////////////////// +// senf::INet6Address + +prefix_ senf::INet6Address::INet6Address() +{ + clear(); +} + +prefix_ senf::INet6Address::INet6Address(struct in6_addr const & addr) +{ + addr_ = addr; +} + +prefix_ struct in6_addr & senf::INet6Address::addr() +{ + return addr_; +} + +prefix_ struct in6_addr const & senf::INet6Address::addr() + const +{ + return addr_; +} + +prefix_ struct in6_addr * senf::INet6Address::addr_p() +{ + return & addr_; +} + +prefix_ struct in6_addr const * senf::INet6Address::addr_p() + const +{ + return & addr_; +} + +prefix_ unsigned senf::INet6Address::addr_len() + const +{ + return sizeof(addr_); +} + +prefix_ std::ostream & senf::operator<<(std::ostream & os, INet6Address const & addr) +{ + os << addr.address(); + return os; +} + +/////////////////////////////////////////////////////////////////////////// +// senf::INet6SocketAddress + +prefix_ senf::INet6SocketAddress::INet6SocketAddress() +{ + clear(); +} + +prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr) +{ + clear(); + assignAddr(addr); +} + +prefix_ senf::INet6SocketAddress::INet6SocketAddress(char const * addr) +{ + clear(); + assignAddr(addr); +} + +prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port) +{ + clear(); + sockaddr_.sin6_addr = addr.addr(); + sockaddr_.sin6_port = htons(port); +} + +prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port, + std::string const & iface) +{ + clear(); + sockaddr_.sin6_addr = addr.addr(); + sockaddr_.sin6_port = htons(port); + assignIface(iface); +} + +prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, + std::string const & iface) +{ + clear(); + assignAddr(addr); + assignIface(iface); +} + +prefix_ senf::INet6Address senf::INet6SocketAddress::host() + const +{ + return INet6Address(sockaddr_.sin6_addr); +} + +prefix_ void senf::INet6SocketAddress::host(INet6Address const & addr) +{ + sockaddr_.sin6_addr = addr.addr(); +} + +prefix_ unsigned senf::INet6SocketAddress::port() + const +{ + return ntohs(sockaddr_.sin6_port); +} + +prefix_ void senf::INet6SocketAddress::port(unsigned port) +{ + sockaddr_.sin6_port = htons(port); +} + +prefix_ void senf::INet6SocketAddress::iface(std::string const & iface) +{ + assignIface(iface); +} + +prefix_ struct sockaddr * senf::INet6SocketAddress::sockaddr_p() +{ + return reinterpret_cast(&sockaddr_); +} + +prefix_ struct sockaddr const * senf::INet6SocketAddress::sockaddr_p() + const +{ + return reinterpret_cast(&sockaddr_); +} + +prefix_ unsigned senf::INet6SocketAddress::sockaddr_len() + const +{ + return sizeof(sockaddr_); +} + +prefix_ std::ostream & senf::operator<<(std::ostream & os, INet6SocketAddress const & addr) +{ + os << addr.address(); + return os; +} + ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_ // Local Variables: // mode: c++ +// fill-column: 100 // c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: