// $Id$
//
-// Copyright (C) 2006
+// Copyright (C) 2006
// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
try {
// Replace lexical_cast with strtoul ?
addr_.sin_port = htons(boost::lexical_cast< ::u_int16_t >(std::string(address,i+1)));
- }
+ }
catch (boost::bad_lexical_cast const &) {
throw InvalidINetAddressException();
}
prefix_ senf::INet6Address::INet6Address(std::string const & addr)
{
if (inet_pton(AF_INET6,addr.c_str(),&addr_) <= 0)
- throw InvalidINetAddressException();
+ throw InvalidINetAddressException();
}
prefix_ senf::INet6Address::INet6Address(char const * addr)
{
if (inet_pton(AF_INET6,addr,&addr_) <= 0)
- throw InvalidINetAddressException();
+ throw InvalidINetAddressException();
}
prefix_ void senf::INet6Address::clear()
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;
+ sockaddr_.sin6_port == other.sockaddr_.sin6_port &&
+ sockaddr_.sin6_scope_id == other.sockaddr_.sin6_scope_id;
}
prefix_ bool senf::INet6SocketAddress::operator!=(INet6SocketAddress const & other)
std::stringstream ss;
ss << '[' << host();
if (sockaddr_.sin6_scope_id != 0)
- ss << '@' << iface()
+ ss << '@' << iface()
<< "]:" << port();
return ss.str();
}
const
{
if (sockaddr_.sin6_scope_id == 0)
- return "";
+ return "";
char buffer[IFNAMSIZ];
BOOST_ASSERT( if_indextoname(sockaddr_.sin6_scope_id,buffer) );
return std::string(buffer);
typedef boost::tokenizer<separator> tokenizer;
// we don't add ':' to the list of separators since that would give as the IPv6 address
// as a list of tokens. We just strip the : from the port number manually
- separator sep ("", "@[]");
+ separator sep ("", "@[]");
tokenizer tokens (addr, sep);
tokenizer::iterator token (tokens.begin());
- if (token == tokens.end()
- || *token != "["
- || ++token == tokens.end()
- || inet_pton(AF_INET6, std::string(boost::begin(*token),boost::end(*token)).c_str(),
- &sockaddr_.sin6_addr) <= 0
- || ++token == tokens.end())
- throw InvalidINetAddressException();
+ if (token == tokens.end()
+ || *token != "["
+ || ++token == tokens.end()
+ || inet_pton(AF_INET6, std::string(boost::begin(*token),boost::end(*token)).c_str(),
+ &sockaddr_.sin6_addr) <= 0
+ || ++token == tokens.end())
+ throw InvalidINetAddressException();
if (*token == "@") {
- if (++token == tokens.end())
- throw InvalidINetAddressException();
- assignIface(std::string(boost::begin(*token),boost::end(*token)));
- if (++token == tokens.end()
- || *token != "]")
- throw InvalidINetAddressException();
+ if (++token == tokens.end())
+ throw InvalidINetAddressException();
+ assignIface(std::string(boost::begin(*token),boost::end(*token)));
+ if (++token == tokens.end()
+ || *token != "]")
+ throw InvalidINetAddressException();
} else if (*token != "]")
- throw InvalidINetAddressException();
+ throw InvalidINetAddressException();
if (++token == tokens.end()
- || *boost::begin(*token) != ':')
- throw InvalidINetAddressException();
+ || *boost::begin(*token) != ':')
+ throw InvalidINetAddressException();
try {
- sockaddr_.sin6_port = htons(
- boost::lexical_cast<unsigned>(std::string(boost::next(boost::begin(*token)),
- boost::end(*token))));
+ sockaddr_.sin6_port = htons(
+ boost::lexical_cast<unsigned>(std::string(boost::next(boost::begin(*token)),
+ boost::end(*token))));
} catch(boost::bad_lexical_cast const &) {
- throw InvalidINetAddressException();
+ throw InvalidINetAddressException();
}
if (++token != tokens.end())
- throw InvalidINetAddressException();
+ throw InvalidINetAddressException();
}
prefix_ void senf::INet6SocketAddress::assignIface(std::string const & iface)
{
if (iface.empty())
- sockaddr_.sin6_scope_id = 0;
+ sockaddr_.sin6_scope_id = 0;
else {
- sockaddr_.sin6_scope_id = if_nametoindex(iface.c_str());
- if (sockaddr_.sin6_scope_id == 0)
- throw InvalidINetAddressException();
+ sockaddr_.sin6_scope_id = if_nametoindex(iface.c_str());
+ if (sockaddr_.sin6_scope_id == 0)
+ throw InvalidINetAddressException();
}
}
\f
// Local Variables:
// mode: c++
+// fill-column: 100
// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: