X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FINetAddressing.cci;h=f7e5b77dde55d14494f8534d90f387c2ef26fa50;hb=9ca82f3198ce01fa2daf50aa8f46e0eb630d275c;hp=7089881c55fbd0d9bf31b3eda39cb3f4c01c8bf8;hpb=ac6a813d9d99f7add4e13aff7a4bcd314d5604a6;p=senf.git diff --git a/Socket/INetAddressing.cci b/Socket/INetAddressing.cci index 7089881..f7e5b77 100644 --- a/Socket/INetAddressing.cci +++ b/Socket/INetAddressing.cci @@ -20,7 +20,9 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Definition of inline non-template functions +/** \file + \brief INet[46]Address and INet[46]AddressingPolicy inline non-template implementation + */ // Custom includes #include @@ -28,6 +30,9 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +// senf::INet4Address + prefix_ senf::INet4Address::INet4Address() { clear(); @@ -53,7 +58,7 @@ prefix_ bool senf::INet4Address::operator==(INet4Address const & other) prefix_ std::string senf::INet4Address::host() const { - // FIXME: thread safety? + /** \fixme thread safety? */ return std::string(::inet_ntoa(addr_.sin_addr)); } @@ -86,6 +91,147 @@ 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_