X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINetAddressing.cci;h=556193846280c9463bb26f77cd6c1e86a84e603e;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=45802bcc3fbad1e5f48c400694078c2622013738;hpb=2c4c9deecc7491fbfc916aeb41074dcb76e8a2c2;p=senf.git diff --git a/Socket/Protocols/INet/INetAddressing.cci b/Socket/Protocols/INet/INetAddressing.cci index 45802bc..5561938 100644 --- a/Socket/Protocols/INet/INetAddressing.cci +++ b/Socket/Protocols/INet/INetAddressing.cci @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -33,164 +33,92 @@ /////////////////////////////////////////////////////////////////////////// // senf::INet4Address -prefix_ senf::INet4Address::INet4Address() -{ - clear(); -} - -prefix_ senf::INet4Address::INet4Address(char const * address) -{ - assignString(address); -} +prefix_ senf::INet4SocketAddress::INet4SocketAddress() + : BSDSocketAddress (sizeof(sockaddr_in), AF_INET) +{} -prefix_ senf::INet4Address::INet4Address(std::string address) -{ - assignString(address); -} +prefix_ senf::INet4SocketAddress::INet4SocketAddress(const INet4SocketAddress& other) + : BSDSocketAddress(other) +{} -prefix_ bool senf::INet4Address::operator==(INet4Address const & other) - const +prefix_ senf::INet4SocketAddress& +senf::INet4SocketAddress::operator=(const INet4SocketAddress& other) { - return addr_.sin_port == other.addr_.sin_port && - addr_.sin_addr.s_addr == other.addr_.sin_addr.s_addr; + BSDSocketAddress::operator=(other); + return *this; } -prefix_ std::string senf::INet4Address::host() +prefix_ senf::INet4Address senf::INet4SocketAddress::address() const { - char buffer[128]; - return std::string(::inet_ntop(AF_INET,&addr_.sin_addr,buffer,128)); + return INet4Address::from_inaddr(addr_.sin_addr.s_addr); } -prefix_ unsigned senf::INet4Address::port() +prefix_ unsigned senf::INet4SocketAddress::port() const { return ntohs(addr_.sin_port); } -prefix_ struct sockaddr * senf::INet4Address::sockaddr_p() -{ - return reinterpret_cast(&addr_); -} - -prefix_ struct sockaddr const * senf::INet4Address::sockaddr_p() - const -{ - return reinterpret_cast(&addr_); -} - -prefix_ unsigned senf::INet4Address::sockaddr_len() - const -{ - return sizeof(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() +prefix_ void senf::INet4SocketAddress::address(INet4Address const & addr) { - return & addr_; + addr_.sin_addr.s_addr = addr.inaddr(); } -prefix_ struct in6_addr const * senf::INet6Address::addr_p() - const -{ - return & addr_; -} - -prefix_ unsigned senf::INet6Address::addr_len() - const +prefix_ void senf::INet4SocketAddress::port(unsigned p) { - return sizeof(addr_); -} - -prefix_ std::ostream & senf::operator<<(std::ostream & os, INet6Address const & addr) -{ - os << addr.address(); - return os; + addr_.sin_port = htons(p); } /////////////////////////////////////////////////////////////////////////// // 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); -} + : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6) +{} prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port) + : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6) { - clear(); - sockaddr_.sin6_addr = addr.addr(); + std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]); sockaddr_.sin6_port = htons(port); } prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port, std::string const & iface) + : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6) { - clear(); - sockaddr_.sin6_addr = addr.addr(); + std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]); sockaddr_.sin6_port = htons(port); assignIface(iface); } -prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, - std::string const & iface) +prefix_ senf::INet6SocketAddress::INet6SocketAddress(unsigned port) + : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6) { - clear(); - assignAddr(addr); - assignIface(iface); + sockaddr_.sin6_port = htons(port); } -prefix_ senf::INet6Address senf::INet6SocketAddress::host() +prefix_ senf::INet6SocketAddress::INet6SocketAddress(const INet6SocketAddress& other) + : BSDSocketAddress (other) +{} + +prefix_ senf::INet6SocketAddress& +senf::INet6SocketAddress::operator=(const INet6SocketAddress& other) +{ + BSDSocketAddress::operator=(other); + return *this; +} + +prefix_ senf::INet6Address senf::INet6SocketAddress::address() const { - return INet6Address(sockaddr_.sin6_addr); + return INet6Address::from_data(&sockaddr_.sin6_addr.s6_addr[0]); } -prefix_ void senf::INet6SocketAddress::host(INet6Address const & addr) +prefix_ void senf::INet6SocketAddress::address(INet6Address const & addr) { - sockaddr_.sin6_addr = addr.addr(); + std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]); } prefix_ unsigned senf::INet6SocketAddress::port() @@ -209,29 +137,6 @@ 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_