From 304cdbadc6b0f72ebc30c327269a65b0d175cffc Mon Sep 17 00:00:00 2001 From: Richard Whitehouse Date: Sun, 20 Feb 2011 07:05:57 +0000 Subject: [PATCH] Add ability to disable ports in order to form a tree. --- .../bridge/model/bridge-port-net-device.cc | 17 ++++++++++++++--- .../bridge/model/bridge-port-net-device.h | 3 +++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/code/src/devices/bridge/model/bridge-port-net-device.cc b/code/src/devices/bridge/model/bridge-port-net-device.cc index 5a68c8f..6406e85 100644 --- a/code/src/devices/bridge/model/bridge-port-net-device.cc +++ b/code/src/devices/bridge/model/bridge-port-net-device.cc @@ -40,7 +40,7 @@ BridgePortNetDevice::GetTypeId (void) } -BridgePortNetDevice::BridgePortNetDevice(Ptr bridge, Ptr device, Ptr node) : m_bridge(bridge), m_device(device){ +BridgePortNetDevice::BridgePortNetDevice(Ptr bridge, Ptr device, Ptr node) : m_bridge(bridge), m_device(device), m_enabled(true){ NS_LOG_FUNCTION_NOARGS (); if (!Mac48Address::IsMatchingType (device->GetAddress())) @@ -62,10 +62,16 @@ BridgePortNetDevice::~BridgePortNetDevice(){ NS_LOG_FUNCTION_NOARGS (); } +void BridgePortNetDevice::SetEnabled(bool enabled){ + m_enabled = enabled; +} + void BridgePortNetDevice::Send(Ptr packet, const Address& source, const Address& dest, uint16_t protocolNumber){ NS_LOG_FUNCTION_NOARGS (); - NS_LOG_LOGIC("SendingPacket(src=" << source << ", dest=" << dest << ")"); - m_device->SendFrom(packet->Copy(), source, dest, protocolNumber); + if(m_enabled){ + NS_LOG_LOGIC("SendingPacket(src=" << source << ", dest=" << dest << ")"); + m_device->SendFrom(packet->Copy(), source, dest, protocolNumber); + } } Ptr BridgePortNetDevice::GetDevice(){ @@ -81,6 +87,9 @@ BridgePortNetDevice::Receive (Ptr incomingPort, Ptr pac Address const &src, Address const &dst, NetDevice::PacketType packetType) { NS_LOG_FUNCTION_NOARGS (); + + if(m_enabled){ + NS_LOG_LOGIC ("UID is " << packet->GetUid ()); NS_LOG_LOGIC ("LearningBridgeForward (incomingPort=" << incomingPort->GetInstanceTypeId ().GetName () @@ -91,6 +100,8 @@ BridgePortNetDevice::Receive (Ptr incomingPort, Ptr pac m_bridge->Forward(this, packet, protocol, src, dst, packetType); + } + } } diff --git a/code/src/devices/bridge/model/bridge-port-net-device.h b/code/src/devices/bridge/model/bridge-port-net-device.h index 58b05f1..3239454 100644 --- a/code/src/devices/bridge/model/bridge-port-net-device.h +++ b/code/src/devices/bridge/model/bridge-port-net-device.h @@ -47,11 +47,14 @@ public: virtual void Send (Ptr packet, const Address& src, const Address& dest, uint16_t protocolNumber); + virtual void SetEnabled(bool enabled); + protected: virtual void Receive (Ptr device, Ptr packet, uint16_t protocol, Address const &source, Address const &destination, NetDevice::PacketType packetType); Ptr m_bridge; Ptr m_device; + bool m_enabled; }; -- 2.34.1