// $Id$
//
-// Copyright (C) 2006
+// Copyright (C) 2006
// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-// Definition of non-inline non-template functions
+/** \file
+ \brief PacketProtocol and PacketSocketHandle non-inline non-template implementation
+ */
#include "PacketSocketHandle.hh"
#include "PacketSocketHandle.ih"
return false;
}
-prefix_ void senf::PacketProtocol::promisc(std::string interface, PromiscMode mode)
- const
-{
- // The interface is really stupid: as far as i understand, it is possible to
- // enable PROMISC and ALLMULTI seperately, however PROMISC is really a superset
- // of ALLMULTI ... grmpf ... therefore we allways set/reset both to implement sane
- // semantics
-
- struct packet_mreq mreq;
- mreq.mr_ifindex = ::if_nametoindex(interface.c_str());
- if (mreq.mr_ifindex == 0)
- throw SystemException(EINVAL);
- mreq.mr_alen = 0;
-
- mreq.mr_type = PACKET_MR_PROMISC;
- int command = mode == Promiscuous ? PACKET_ADD_MEMBERSHIP : PACKET_DROP_MEMBERSHIP;
- if (::setsockopt(body().fd(),SOL_PACKET,command,&mreq,sizeof(mreq)) < 0)
- throw SystemException(errno);
-
- mreq.mr_type = PACKET_MR_ALLMULTI;
- command = mode == AllMulticast ? PACKET_ADD_MEMBERSHIP : PACKET_DROP_MEMBERSHIP;
- if (::setsockopt(body().fd(),SOL_PACKET,command,&mreq,sizeof(mreq)) < 0)
- throw SystemException(errno);
-}
-
prefix_ void senf::PacketProtocol::do_mc_i(std::string interface,
detail::LLAddressCopier const & copier, bool add)
const
\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: