X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FRaw%2FLLAddressing.hh;h=b59ce922105541563dad9c4f4bccd105c48b3cb5;hb=8a6697d11e9a6557d9a5c42b4052666fce32bc10;hp=78a1c326a421e9208c47a65db0bfebc4137fab7d;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Socket/Protocols/Raw/LLAddressing.hh b/senf/Socket/Protocols/Raw/LLAddressing.hh index 78a1c32..b59ce92 100644 --- a/senf/Socket/Protocols/Raw/LLAddressing.hh +++ b/senf/Socket/Protocols/Raw/LLAddressing.hh @@ -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 LLSocketAddress and LLAddressingPolicy public header @@ -29,21 +34,19 @@ // Custom includes #include -#include -#include "../../SocketPolicy.hh" -#include "../../FileHandle.hh" -#include "../BSDAddressingPolicy.hh" -#include "../BSDSocketAddress.hh" +#include +#include +#include #include "MACAddress.hh" //#include "LLAddressing.mpp" //#include "LLAddressing.ih" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { /// \addtogroup addr_group - /// @{ + //\{ /** \brief Link local address @@ -62,7 +65,7 @@ namespace senf { /** \brief Valid pkttype() values - These are the possible values returned by pkttype() + These are the possible values returned by pkttype() */ enum PktType { Undefined = 0 , Host = PACKET_HOST /**< Packet destined for this host */ @@ -72,10 +75,10 @@ namespace senf { , OtherHost = PACKET_OTHERHOST /**< Packet sent to another host (promisc) */ , Outgoing = PACKET_OUTGOING /**< Packet sent out from this host */ }; - - /////////////////////////////////////////////////////////////////////////// + + //-//////////////////////////////////////////////////////////////////////// ///\name Structors and default members - ///@{ + //\{ LLSocketAddress(); ///< Create empty address explicit LLSocketAddress(unsigned proto, std::string const & iface=""); @@ -84,11 +87,13 @@ namespace senf { PacketSocketHandle::bind() with. \param[in] proto Protocol (Ethertype) to listen for \param[in] iface Interface name to bind to */ - explicit LLSocketAddress(std::string const &iface); + explicit LLSocketAddress(std::string const & iface); ///< Create address for \c bind() /**< This constructs an LLSocketAddress valid for calling \c PacketSocketHandle::bind() with. - \param[in] iface Interface name to bind to */ + \param[in] iface Interface name to bind to + \throws UnknownInterfaceException if \a iface is not + a valid interface name. */ // This constructor is for sending packets explicit LLSocketAddress(MACAddress const & addr, std::string const & iface=""); @@ -97,19 +102,21 @@ namespace senf { use with \c PacketSocketHandle::sendto() on a \c SOCK_DGRAM packet socket. \param addr Address to send data to - \param iface Interface to send packet from */ + \param iface Interface to send packet from + \throws UnknownInterfaceException if \a iface is not + a valid interface name. */ - LLSocketAddress(const LLSocketAddress& other); - LLSocketAddress& operator=(const LLSocketAddress& other); + LLSocketAddress(LLSocketAddress const & other); + LLSocketAddress& operator=(LLSocketAddress const & other); - ///@} - /////////////////////////////////////////////////////////////////////////// + //\} + //-//////////////////////////////////////////////////////////////////////// MACAddress address() const; ///< Return address std::string interface() const; ///< Return interface name unsigned protocol() const; ///< Return address protocol (ethertype) - unsigned arptype() const; ///< Return the hatype field (ARP hardware type) + unsigned arptype() const; ///< Return the arptype field (ARP hardware type) PktType pkttype() const; ///< Return type of packet // The mutating interface is purposely restricted to allow only @@ -117,6 +124,8 @@ namespace senf { void address(MACAddress const & addr); ///< Change address void interface(std::string const & iface); ///< Change interface + /**< \throws UnknownInterfaceException if \a iface + is not a valid interface name. */ void protocol(unsigned prot); ///< Change protocol using BSDSocketAddress::sockaddr_p; @@ -126,10 +135,10 @@ namespace senf { struct ::sockaddr_ll addr_; }; - /// @} + //\} /// \addtogroup policy_impl_group - /// @{ + //\{ /** \brief Addressing policy supporting link-local addressing @@ -145,7 +154,7 @@ namespace senf { or peer() members. */ struct LLAddressingPolicy - : public AddressingPolicyBase, + : public BSDAddressingPolicy, private BSDAddressingPolicyMixin { typedef LLSocketAddress Address; @@ -154,7 +163,7 @@ namespace senf { using BSDAddressingPolicyMixin::bind; }; - /// @} + //\} /** \brief Write link layer address \related LLSocketAddress @@ -162,7 +171,7 @@ namespace senf { std::ostream & operator<<(std::ostream & os, LLSocketAddress const & llAddr); } -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #include "LLAddressing.cci" //#include "LLAddressing.ct" //#include "LLAddressing.cti"