20 #include "packet-socket-address.h"
21 #include "ns3/net-device.h"
28 PacketSocketAddress::PacketSocketAddress ()
33 PacketSocketAddress::SetProtocol (uint16_t protocol)
36 m_protocol = protocol;
39 PacketSocketAddress::SetAllDevices (
void)
42 m_isSingleDevice =
false;
46 PacketSocketAddress::SetSingleDevice (uint32_t index)
49 m_isSingleDevice =
true;
53 PacketSocketAddress::SetPhysicalAddress (
const Address address)
60 PacketSocketAddress::GetProtocol (
void)
const
66 PacketSocketAddress::IsSingleDevice (
void)
const
69 return m_isSingleDevice;
72 PacketSocketAddress::GetSingleDevice (
void)
const
78 PacketSocketAddress::GetPhysicalAddress (
void)
const
84 PacketSocketAddress::operator
Address ()
const
90 PacketSocketAddress::ConvertTo (
void)
const
94 uint8_t buffer[Address::MAX_SIZE];
95 buffer[0] = m_protocol & 0xff;
96 buffer[1] = (m_protocol >> 8) & 0xff;
97 buffer[2] = (m_device >> 24) & 0xff;
98 buffer[3] = (m_device >> 16) & 0xff;
99 buffer[4] = (m_device >> 8) & 0xff;
100 buffer[5] = (m_device >> 0) & 0xff;
101 buffer[6] = m_isSingleDevice ? 1 : 0;
102 uint32_t copied = m_address.
CopyAllTo (buffer + 7, Address::MAX_SIZE - 7);
103 return Address (GetType (), buffer, 7 + copied);
110 uint8_t buffer[Address::MAX_SIZE];
112 uint16_t protocol = buffer[0] | (buffer[1] << 8);
121 bool isSingleDevice = (buffer[6] == 1) ?
true :
false;
123 physical.
CopyAllFrom (buffer + 7, Address::MAX_SIZE - 7);
125 ad.SetProtocol (protocol);
128 ad.SetSingleDevice (device);
134 ad.SetPhysicalAddress (physical);
144 PacketSocketAddress::GetType (
void)
#define NS_LOG_FUNCTION(parameters)
bool IsMatchingType(uint8_t type) const
an address for a packet socket
#define NS_ASSERT(condition)
static bool IsMatchingType(const Address &address)
#define NS_LOG_COMPONENT_DEFINE(name)
#define NS_LOG_FUNCTION_NOARGS()
a polymophic address class
uint32_t CopyAllTo(uint8_t *buffer, uint8_t len) const
uint32_t CopyAllFrom(const uint8_t *buffer, uint8_t len)
uint32_t CopyTo(uint8_t buffer[MAX_SIZE]) const
static PacketSocketAddress ConvertFrom(const Address &address)
static uint8_t Register(void)