// Custom includes
#include <sys/socket.h>
#include <netpacket/packet.h>
-#include <senf/Socket/SocketPolicy.hh>
-#include <senf/Socket/FileHandle.hh>
#include <senf/Socket/Protocols/BSDAddressingPolicy.hh>
#include <senf/Socket/Protocols/BSDSocketAddress.hh>
#include "MACAddress.hh"
//#include "LLAddressing.mpp"
//#include "LLAddressing.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup addr_group
- /// @{
+ //\{
/** \brief Link local address
/** \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 */
, 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="");
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="");
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
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;
struct ::sockaddr_ll addr_;
};
- /// @}
+ //\}
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief Addressing policy supporting link-local addressing
or peer() members.
*/
struct LLAddressingPolicy
- : public AddressingPolicyBase,
+ : public BSDAddressingPolicy,
private BSDAddressingPolicyMixin<LLSocketAddress>
{
typedef LLSocketAddress Address;
using BSDAddressingPolicyMixin<LLSocketAddress>::bind;
};
- /// @}
+ //\}
/** \brief Write link layer address
\related LLSocketAddress
std::ostream & operator<<(std::ostream & os, LLSocketAddress const & llAddr);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "LLAddressing.cci"
//#include "LLAddressing.ct"
//#include "LLAddressing.cti"