X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINetAddressing.cc;h=fdb4ee1564da4614eabbbee8b8e2fd979adb3aca;hb=26d3a25e9afa95c1daff06878a29e45cf811d18b;hp=d3c4e3612abbd110f5d64d9063feca136798f064;hpb=3cb0a2ff50b8f1111da34b696e64fb1b037cd683;p=senf.git diff --git a/Socket/Protocols/INet/INetAddressing.cc b/Socket/Protocols/INet/INetAddressing.cc index d3c4e36..fdb4ee1 100644 --- a/Socket/Protocols/INet/INetAddressing.cc +++ b/Socket/Protocols/INet/INetAddressing.cc @@ -44,11 +44,11 @@ // senf::INet4SocketAddress prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & addr) + : BSDSocketAddress (sizeof(sockaddr_in), AF_INET) { - clear(); - unsigned portIx = addr.find(':'); + std::string::size_type portIx = addr.find(':'); try { - port( boost::lexical_cast< ::u_int16_t >(portIx == std::string::npos + port( boost::lexical_cast< ::u_int16_t >(portIx == std::string::npos ? addr : std::string(addr,portIx+1)) ); } catch (boost::bad_lexical_cast const &) { @@ -59,32 +59,25 @@ prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & addr) } prefix_ senf::INet4SocketAddress::INet4SocketAddress(INet4Address const & addr, unsigned p) + : BSDSocketAddress (sizeof(sockaddr_in), AF_INET) { - clear(); address(addr); port(p); } prefix_ senf::INet4SocketAddress::INet4SocketAddress(unsigned p) + : BSDSocketAddress (sizeof(sockaddr_in), AF_INET) { - clear(); port(p); } -prefix_ void senf::INet4SocketAddress::clear() -{ - ::memset(&addr_,0,sizeof(addr_)); - addr_.sin_family = AF_INET; -} - /////////////////////////////////////////////////////////////////////////// // senf::INet6SocketAddress prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, INet6Address::Resolve_t resolve) + : BSDSocketAddress (sizeof(sockaddr_in6), AF_INET6) { - clear(); - // Format of addr: "[" address [ "%" interface ] "]" ":" port // or: host ":" port // or: port @@ -95,7 +88,7 @@ prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, ZoneId = 2, Hostname = 3, Port = 4 }; - + boost::smatch match; if (! regex_match(addr, match, addressRx)) throw AddressSyntaxException(); @@ -113,20 +106,6 @@ prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, } } -prefix_ bool senf::INet6SocketAddress::operator==(INet6SocketAddress const & other) - const -{ - return ::memcmp(&sockaddr_.sin6_addr, &other.sockaddr_.sin6_addr, sizeof(sockaddr_.sin6_addr))==0 && - sockaddr_.sin6_port == other.sockaddr_.sin6_port && - sockaddr_.sin6_scope_id == other.sockaddr_.sin6_scope_id; -} - -prefix_ void senf::INet6SocketAddress::clear() -{ - ::memset(&sockaddr_,0,sizeof(sockaddr_)); - sockaddr_.sin6_family = AF_INET6; -} - prefix_ std::string senf::INet6SocketAddress::iface() const { @@ -156,7 +135,7 @@ prefix_ void senf::INet6SocketAddress::assignIface(std::string const & iface) #undef prefix_ //#include "INetAddressing.mpp" - + // Local Variables: // mode: c++ // fill-column: 100