X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FINetAddressing.cci;h=8af052f7a420905b66c6140f782e7990e4dbec2a;hb=9a988902090d28007578e93bffd809f6bd913155;hp=a04def2abd41a11ce837a37f917d937c5bb5de42;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Socket/INetAddressing.cci b/Socket/INetAddressing.cci index a04def2..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 @@ -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,69 +30,216 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// -prefix_ satcom::lib::INet4Address::INet4Address() +/////////////////////////////////////////////////////////////////////////// +// senf::INet4Address + +prefix_ senf::INet4Address::INet4Address() { clear(); } -prefix_ satcom::lib::INet4Address::INet4Address(char const * address) +prefix_ senf::INet4Address::INet4Address(char const * address) { assignString(address); } -prefix_ satcom::lib::INet4Address::INet4Address(std::string address) +prefix_ senf::INet4Address::INet4Address(std::string address) { assignString(address); } -prefix_ bool satcom::lib::INet4Address::operator==(INet4Address const & other) +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; } -prefix_ std::string satcom::lib::INet4Address::host() +prefix_ std::string senf::INet4Address::host() const { - // FIXME: thread safety? + /** \fixme thread safety? */ return std::string(::inet_ntoa(addr_.sin_addr)); } -prefix_ unsigned satcom::lib::INet4Address::port() +prefix_ unsigned senf::INet4Address::port() const { return ntohs(addr_.sin_port); } -prefix_ struct sockaddr * satcom::lib::INet4Address::sockaddr_p() +prefix_ struct sockaddr * senf::INet4Address::sockaddr_p() { return reinterpret_cast(&addr_); } -prefix_ struct sockaddr const * satcom::lib::INet4Address::sockaddr_p() +prefix_ struct sockaddr const * senf::INet4Address::sockaddr_p() const { return reinterpret_cast(&addr_); } -prefix_ unsigned satcom::lib::INet4Address::sockaddr_len() +prefix_ unsigned senf::INet4Address::sockaddr_len() const { return sizeof(addr_); } -prefix_ std::ostream & satcom::lib::operator<<(std::ostream & os, INet4Address const & addr) +prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4Address const & addr) { os << addr.str(); 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++ -// c-file-style: "satcom" +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: