X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FINet%2FINetAddressing.cc;h=d2a8a1b0f3c82afb45c7731d17953bff663f312e;hb=HEAD;hp=640970cb24791b80e06f464ed39233e70bed4825;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Socket/Protocols/INet/INetAddressing.cc b/senf/Socket/Protocols/INet/INetAddressing.cc index 640970c..d2a8a1b 100644 --- a/senf/Socket/Protocols/INet/INetAddressing.cc +++ b/senf/Socket/Protocols/INet/INetAddressing.cc @@ -2,23 +2,28 @@ // // Copyright (C) 2006 // 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 -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief INet[46]Address and INet[46]AddressingPolicy non-inline non-template implementation @@ -35,12 +40,13 @@ #include #include #include +#include //#include "INetAddressing.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::INet4SocketAddress prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & addr) @@ -52,7 +58,7 @@ prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & addr) ? addr : std::string(addr,portIx+1)) ); } catch (boost::bad_lexical_cast const &) { - throw AddressSyntaxException() << "invalid port number"; + throw AddressSyntaxException(addr) << ": invalid port number"; } if (portIx != std::string::npos) address( INet4Address::from_string(std::string(addr,0,portIx)) ); @@ -91,7 +97,7 @@ prefix_ std::istream & senf::operator>>(std::istream & is, INet4SocketAddress & return is; } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::INet6SocketAddress prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, @@ -111,7 +117,7 @@ prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr, boost::smatch match; if (! regex_match(addr, match, addressRx)) - throw AddressSyntaxException(); + throw AddressSyntaxException(addr); if (match[ZoneId].matched) assignIface(match[ZoneId]); @@ -132,11 +138,8 @@ prefix_ std::string senf::INet6SocketAddress::iface() if (sockaddr_.sin6_scope_id == 0) return ""; char buffer[IFNAMSIZ]; -#ifdef SENF_DEBUG - SENF_ASSERT( if_indextoname(sockaddr_.sin6_scope_id,buffer) ); -#else - if_indextoname(sockaddr_.sin6_scope_id,buffer); -#endif + SENF_ASSERT_EXPRESSION(if_indextoname(sockaddr_.sin6_scope_id,buffer), + "Internal failure: Invalid interface index (how does it get here?)"); return std::string(buffer); } @@ -147,7 +150,7 @@ prefix_ void senf::INet6SocketAddress::assignIface(std::string const & iface) else { sockaddr_.sin6_scope_id = if_nametoindex(iface.c_str()); if (sockaddr_.sin6_scope_id == 0) - throw AddressSyntaxException(); + throw AddressSyntaxException(iface); } } @@ -175,11 +178,11 @@ prefix_ std::istream & senf::operator>>(std::istream & is, INet6SocketAddress & return is; } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "INetAddressing.mpp" - + // Local Variables: // mode: c++ // fill-column: 100