--- a/src/DIF/RA/RA.h
+++ b/src/DIF/RA/RA.h
@@ -1,3 +1,5 @@
+//
+// Copyright Š 2014 - 2015 PRISTINE Consortium (http://ict-pristine.eu)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
@@ -35,6 +37,7 @@
#include "PDUForwardingTable.h"
#include "NM1FlowTable.h"
#include "QueueAllocBase.h"
+#include "CongestionDescriptor.h"
/* Forwarding and routing stuff... */
#include "PDUFwdTabGenerator.h"
@@ -63,10 +66,14 @@
class RA : public RABase
{
public:
- virtual void createNM1Flow(Flow *flow);
- virtual void createNM1FlowWithoutAllocate(Flow *flow);
- virtual void removeNM1Flow(Flow *flow);
+ virtual void createNM1Flow(Flow* flow);
+ virtual void createNM1FlowWithoutAllocate(Flow* flow);
+ virtual void removeNM1Flow(Flow* flow);
virtual bool bindNFlowToNM1Flow(Flow* flow);
+ virtual void blockNM1PortOutput(Flow* flow);
+ virtual void unblockNM1PortOutput(Flow* flow);
+ virtual void blockNM1PortInput(cObject* obj);
+ virtual void unblockNM1PortInput(cObject* obj);
// event hook handlers
virtual void postNFlowAllocation(Flow* flow);
@@ -83,7 +90,6 @@
cModule* rmtModule;
RMT* rmt;
RMTModuleAllocator* rmtAllocator;
- //PDUForwardingTable* fwdTable;
NM1FlowTable* flowTable;
QueueAllocBase* qAllocPolicy;
@@ -104,13 +110,26 @@
simsignal_t sigRACreFloPosi;
simsignal_t sigRACreFloNega;
+ simsignal_t sigRASDReqFromRMT;
+ simsignal_t sigRASDReqFromRIB;
+
LisRACreFlow* lisRACreFlow;
LisRAAllocResPos* lisRAAllocResPos;
LisRACreAllocResPos* lisRACreAllocResPos;
LisRACreResPosi* lisRACreResPosi;
+ LisEFCPStopSending* lisEFCPStopSending;
+ LisEFCPStartSending* lisEFCPStartSending;
+
+ LisRMTSlowdownRequest* lisRMTSDReq;
+ LisRIBCongNotif* lisRIBCongNotif;
+
+ LisRMTPortDrainDisable* lisRMTPortDrainDisable;
+ LisRMTPortDrainEnable* lisRMTPortDrainEnable;
void signalizeCreateFlowPositiveToRIBd(Flow* flow);
void signalizeCreateFlowNegativeToRIBd(Flow* flow);
+ void signalizeSlowdownRequestToRIBd(cPacket* pdu);
+ void signalizeSlowdownRequestToEFCP(cObject* obj);
};