X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FINet%2FMulticastSocketProtocol.cc;h=b5bc181d1497a7b17d570e474ba5ee45fc8cd3a0;hb=51b24c3227717ce5ad8111a99c2d7eea5fa0bd8d;hp=1b3f303433e60368d8b6407a319e38949645a991;hpb=3fe2ed38b800bcb57afff676698462e763724245;p=senf.git diff --git a/senf/Socket/Protocols/INet/MulticastSocketProtocol.cc b/senf/Socket/Protocols/INet/MulticastSocketProtocol.cc index 1b3f303..b5bc181 100644 --- a/senf/Socket/Protocols/INet/MulticastSocketProtocol.cc +++ b/senf/Socket/Protocols/INet/MulticastSocketProtocol.cc @@ -2,23 +2,28 @@ // // Copyright (C) 2007 // 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 MulticastSocketProtocol non-inline non-template implementation */ @@ -34,9 +39,9 @@ //#include "MulticastSocketProtocol.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::MulticastSocketProtocol prefix_ void senf::MulticastSocketProtocol::broadcastEnabled(bool v) @@ -63,7 +68,7 @@ prefix_ bool senf::MulticastSocketProtocol::mcLoop() int value (0); socklen_t len (sizeof(value)); if (::getsockopt(fd(),SOL_IP,IP_MULTICAST_LOOP,&value,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(IP_MULTICAST_LOOP)"); return value; } @@ -72,7 +77,7 @@ prefix_ void senf::MulticastSocketProtocol::mcLoop(bool value) { int ivalue (value); if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_LOOP,&ivalue,sizeof(ivalue)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(IP_MULTICAST_LOOP)"); } prefix_ void senf::MulticastSocketProtocol::mcIface(std::string const & iface) @@ -86,7 +91,7 @@ prefix_ void senf::MulticastSocketProtocol::mcIface(std::string const & iface) throw SystemException(EINVAL SENF_EXC_DEBUGINFO); } if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_IF,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(IP_MULTICAST_IF)"); } prefix_ unsigned senf::MulticastSocketProtocol::mcTTL() @@ -95,7 +100,7 @@ prefix_ unsigned senf::MulticastSocketProtocol::mcTTL() int value (0); socklen_t len (sizeof(value)); if (::getsockopt(fd(),SOL_IP,IP_MULTICAST_TTL,&value,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(IP_MULTICAST_TTL)"); return value; } @@ -103,10 +108,10 @@ prefix_ void senf::MulticastSocketProtocol::mcTTL(unsigned value) const { if (::setsockopt(fd(),SOL_IP,IP_MULTICAST_TTL,&value,sizeof(value)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::getsockopt(IP_MULTICAST_TTL"); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::INet4MulticastSocketProtocol prefix_ void senf::INet4MulticastSocketProtocol::mcAddMembership(INet4Address const & mcAddr) @@ -154,7 +159,7 @@ prefix_ void senf::INet4MulticastSocketProtocol::mcDropMembership(INet4Address c mreqn.imr_address.s_addr = htons(INADDR_ANY); mreqn.imr_ifindex = 0; if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IP_DROP_MEMBERSHIP"); } prefix_ void senf::INet4MulticastSocketProtocol::mcDropMembership(INet4Address const & mcAddr, @@ -166,7 +171,7 @@ prefix_ void senf::INet4MulticastSocketProtocol::mcDropMembership(INet4Address c mreqn.imr_address.s_addr = localAddr.inaddr(); mreqn.imr_ifindex = 0; if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IP_DROP_MEMBERSHIP"); } prefix_ void senf::INet4MulticastSocketProtocol::mcDropMembership(INet4Address const & mcAddr, @@ -180,7 +185,7 @@ prefix_ void senf::INet4MulticastSocketProtocol::mcDropMembership(INet4Address c if (mreqn.imr_ifindex == 0) throw SystemException("::if_nametoindex()",ENOENT SENF_EXC_DEBUGINFO); if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IP_DROP_MEMBERSHIP"); } namespace { @@ -217,7 +222,7 @@ prefix_ void senf::INet4MulticastSocketProtocol::mcLeaveSSMSource(INet4Address c mc4SSMSourceRequest(MCAST_LEAVE_SOURCE_GROUP, fd(), group, source, iface); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::INet6MulticastSocketProtocol prefix_ void senf::INet6MulticastSocketProtocol::mcAddMembership(INet6Address const & mcAddr) @@ -274,14 +279,14 @@ prefix_ void senf::INet6MulticastSocketProtocol::mcDropMembership(INet6Address c mreqn.imr_address.s_addr = htons(INADDR_ANY); mreqn.imr_ifindex = 0; if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IP_DROP_MEMBERSHIP"); } else { struct ipv6_mreq mreqn; std::copy(mcAddr.begin(), mcAddr.end(), mreqn.ipv6mr_multiaddr.s6_addr); mreqn.ipv6mr_interface = 0; if (::setsockopt(fd(),SOL_IPV6,IPV6_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IPV6_DROP_MEMBERSHIP"); } } @@ -298,7 +303,7 @@ senf::INet6MulticastSocketProtocol::mcDropMembership(INet6Address const & mcAddr if (mreqn.imr_ifindex == 0) throw SystemException("::if_nametoindex()",ENOENT SENF_EXC_DEBUGINFO); if (::setsockopt(fd(),SOL_IP,IP_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IP_DROP_MEMBERSHIP"); } else { struct ipv6_mreq mreqn; @@ -307,7 +312,7 @@ senf::INet6MulticastSocketProtocol::mcDropMembership(INet6Address const & mcAddr if (mreqn.ipv6mr_interface == 0) throw SystemException("::if_nametoindex()",ENOENT SENF_EXC_DEBUGINFO); if (::setsockopt(fd(),SOL_IPV6,IPV6_DROP_MEMBERSHIP,&mreqn,sizeof(mreqn)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::setsockopt(IPV6_DROP_MEMBERSHIP"); } } @@ -368,7 +373,7 @@ prefix_ void senf::INet6MulticastSocketProtocol::mcLeaveSSMSource(INet6Address c } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "MulticastSocketProtocol.mpp"