An interface for a Controller of OpenFlowSwitchNetDevices. More...
#include "openflow-interface.h"
Public Member Functions | |
~Controller () override | |
Destructor. More... | |
virtual void | AddSwitch (Ptr< OpenFlowSwitchNetDevice > swtch) |
Adds a switch to the controller. More... | |
virtual void | ReceiveFromSwitch (Ptr< OpenFlowSwitchNetDevice > swtch, ofpbuf *buffer) |
A switch calls this method to pass a message on to the Controller. More... | |
void | StartDump (StatsDumpCallback *cb) |
Starts a callback-based, reliable, possibly multi-message reply to a request made by the controller. More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Protected Types | |
typedef std::set< Ptr< OpenFlowSwitchNetDevice > > | Switches_t |
OpenFlowSwitchNetDevice container type. More... | |
Protected Member Functions | |
ofp_flow_mod * | BuildFlow (sw_flow_key key, uint32_t buffer_id, uint16_t command, void *acts, size_t actions_len, int idle_timeout, int hard_timeout) |
Construct flow data from a matching key to build a flow entry for adding, modifying, or deleting a flow. More... | |
uint8_t | GetPacketType (ofpbuf *buffer) |
Get the packet type on the buffer, which can then be used to determine how to handle the buffer. More... | |
virtual void | SendToSwitch (Ptr< OpenFlowSwitchNetDevice > swtch, void *msg, size_t length) |
However the controller is implemented, this method is to be used to pass a message on to a switch. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoDispose () |
Destructor implementation. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Protected Attributes | |
Switches_t | m_switches |
The collection of switches registered to this controller. More... | |
Additional Inherited Members | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
An interface for a Controller of OpenFlowSwitchNetDevices.
Follows the OpenFlow specification for a controller.
Definition at line 399 of file openflow-interface.h.
|
protected |
OpenFlowSwitchNetDevice container type.
Definition at line 492 of file openflow-interface.h.
|
override |
|
virtual |
Adds a switch to the controller.
swtch | The switch to register. |
Definition at line 691 of file openflow-interface.cc.
References m_switches, NS_LOG_INFO, and openflow-switch::swtch.
|
protected |
Construct flow data from a matching key to build a flow entry for adding, modifying, or deleting a flow.
key | The matching key data; used to create a flow that matches the packet. |
buffer_id | The OpenFlow Buffer ID; used to run the actions on the packet if we add or modify the flow. |
command | Whether to add, modify, or delete this flow. |
acts | List of actions to execute. |
actions_len | Length of the actions buffer. |
idle_timeout | Flow expires if left inactive for this amount of time (specify OFP_FLOW_PERMANENT to disable feature). |
hard_timeout | Flow expires after this amount of time (specify OFP_FLOW_PERMANENT to disable feature). |
Definition at line 716 of file openflow-interface.cc.
Referenced by ns3::ofi::DropController::ReceiveFromSwitch(), and ns3::ofi::LearningController::ReceiveFromSwitch().
|
protected |
Get the packet type on the buffer, which can then be used to determine how to handle the buffer.
buffer | The packet in OpenFlow buffer format. |
Definition at line 758 of file openflow-interface.cc.
References check-style-clang-format::type.
Referenced by ns3::ofi::DropController::ReceiveFromSwitch(), and ns3::ofi::LearningController::ReceiveFromSwitch().
|
static |
Register this type.
Definition at line 676 of file openflow-interface.cc.
References ns3::TypeId::SetParent().
|
inlinevirtual |
A switch calls this method to pass a message on to the Controller.
swtch | The switch the message was received from. |
buffer | The message. |
Reimplemented in ns3::ofi::LearningController, and ns3::ofi::DropController.
Definition at line 423 of file openflow-interface.h.
|
protectedvirtual |
However the controller is implemented, this method is to be used to pass a message on to a switch.
swtch | The switch to receive the message. |
msg | The message to send. |
length | The length of the message. |
Definition at line 704 of file openflow-interface.cc.
References m_switches, NS_LOG_ERROR, and openflow-switch::swtch.
Referenced by ns3::ofi::DropController::ReceiveFromSwitch(), and ns3::ofi::LearningController::ReceiveFromSwitch().
void ns3::ofi::Controller::StartDump | ( | StatsDumpCallback * | cb | ) |
Starts a callback-based, reliable, possibly multi-message reply to a request made by the controller.
If an incoming request needs to have a reliable reply that might require multiple messages, it can use StartDump() to set up a callback that will be called as buffer space for replies.
A stats request made by the controller is processed by the switch, the switch then calls this method to tell the controller to start asking for information. By default (it can be overridden), the controller stops all work to run through the callback. ReceiveFromSwitch must be defined appropriately to handle the status reply messages generated by the switch, or otherwise the status reply messages will be sent and discarded.
cb | The callback data. |
Definition at line 767 of file openflow-interface.cc.
References NS_LOG_WARN, ns3::OpenFlowSwitchNetDevice::StatsDone(), ns3::OpenFlowSwitchNetDevice::StatsDump(), and ns3::ofi::StatsDumpCallback::swtch.
|
protected |
The collection of switches registered to this controller.
Definition at line 493 of file openflow-interface.h.
Referenced by ~Controller(), AddSwitch(), ns3::ofi::DropController::ReceiveFromSwitch(), ns3::ofi::LearningController::ReceiveFromSwitch(), and SendToSwitch().