//
// Copyright (C) 2007
// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-// Stefan Bund <g0dil@berlios.de>
//
-// 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 <g0dil@berlios.de>
/** \file
\brief MulticastSocketProtocol public header */
#define HH_SENF_Socket_Protocols_INet_MulticastSocketProtocol_ 1
// Custom includes
-#include "../../../Socket/SocketProtocol.hh"
+#include <senf/Socket/SocketProtocol.hh>
#include "INet4Address.hh"
#include "INet6Address.hh"
//#include "MulticastSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
///\addtogroup protocol_facets_group
- ///\{
-
+ //\{
+
/** \brief Generic addressing type independent multicast protocol facet
\todo implement complete new multicast API from RFC3678 (as far as supported by linux)
\bug mcLeaveSSMSource fails with EADDRNOTAVAIL
*/
- class MulticastSocketProtocol
+ class MulticastSocketProtocol
: public virtual SocketProtocol
{
public:
unsigned mcTTL() const; ///< Return current multicast TTL
void mcTTL(unsigned value) const; ///< Set multicast TTL
- bool mcLoop() const; ///< Return current multicast loopback state.
+ bool mcLoop() const; ///< Return current multicast loopback state.
void mcLoop(bool value) const; ///< Set multicast loopback state
/**< If set to false via \c mcLoop(value) multicast messages
will not be looped back to local sockets. Default value
void mcIface(std::string const & iface = std::string()) const;
///< Set multicast send interface of the socket
/**< \param[in] iface name of interface to send multicast
- data from
+ data from
Under current linux versions this option is broken at
best. Don't use. */
/**< This member will add \a mcAddr to the list of multicast
groups received. The group is joined on the interface
with the given local address.
- \deprecated Use \link mcAddMembership(INet4Address const & mcAddr, std::string const & iface) const mcAddMembership( \a mcAddr , \a iface )\endlink
+ \deprecated Use \link mcAddMembership(INet4Address const & mcAddr, std::string const & iface) const mcAddMembership( \a mcAddr , \a iface )\endlink
for compatibility with the IPv6 API.
\param[in] mcAddr address of group to join
\param[in] localAddr address of interface to join on */
multicast groups received. The group is left from the
default interface.
\param[in] mcAddr address of group to leave */
- void mcDropMembership(INet4Address const & mcAddr, INet4Address const & localAddr)
+ void mcDropMembership(INet4Address const & mcAddr, INet4Address const & localAddr)
const;
///< leave multicast group on a specific interface
/**< This member will remove \a mcAddr from the list of
multicast groups received. The group is left from the
interface with the given local address.
- \deprecated Use \link mcDropMembership(INet4Address const & mcAddr, std::string const & iface) const mcDropMembership( \a mcAddr , \a iface )\endlink
+ \deprecated Use \link mcDropMembership(INet4Address const & mcAddr, std::string const & iface) const mcDropMembership( \a mcAddr , \a iface )\endlink
for compatibility with the IPv6 API.
\param[in] mcAddr address of group to leave
\param[in] localAddr address of interface to leave
from */
- void mcDropMembership(INet4Address const & mcAddr, std::string const & iface)
+ void mcDropMembership(INet4Address const & mcAddr, std::string const & iface)
const;
///< leave multicast group on a specific interface
/**< This member will remove \a mcAddr from the list of
\param[in] mcAddr address of group to leave
\param[in] iface interface name */
- void mcJoinSSMSource(INet4Address const & group, INet4Address const & source,
+ void mcJoinSSMSource(INet4Address const & group, INet4Address const & source,
std::string const & iface) const;
///< join SSM multicast group
/**< This call will join the multicast group \a group for
\param[in] mcAddr address of group to leave
\param[in] iface interface name */
- void mcJoinSSMSource(INet6Address const & group, INet6Address const & source,
+ void mcJoinSSMSource(INet6Address const & group, INet6Address const & source,
std::string const & iface) const;
///< join SSM multicast group
/**< This call will join the multicast group \a group for
group on
\param[in] iface interface to join the group on. If set
to the empty string, use the default interface. */
- void mcJoinSSMSource(INet6Address const & group, INet6Address const & source,
+ void mcJoinSSMSource(INet6Address const & group, INet6Address const & source,
int ifacei = 0) const;
///< join SSM multicast group
/**< This call will join the multicast group \a group for
\param[in] iface interface to leave the group on */
};
- ///\}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MulticastSocketProtocol.cci"
//#include "MulticastSocketProtocol.ct"
//#include "MulticastSocketProtocol.cti"