|
INET Framework for OMNeT++/OMNEST
|
#include <AnsaQosClassifiers.h>
Public Member Functions | |
| DSCPClassifier (cXMLElement &clsfrConfig) | |
| unsigned char | readDscp (std::string dscpString) |
| virtual bool | classifyPacket (cMessage *msg) |
| virtual std::string | info () |
Private Attributes | |
| std::vector< unsigned char > | values |
| std::string | infoString |
Definition at line 106 of file AnsaQosClassifiers.h.
| ANSAQOS::DSCPClassifier::DSCPClassifier | ( | cXMLElement & | clsfrConfig | ) |
Definition at line 229 of file AnsaQosClassifiers.cc.
{
/* Do retazca uklada informacie pre graficke rozhranie */
infoString = "DSCP:=";
/* Prechadzanie elementov XML konfiguracie */
cXMLElementList dscpDetails = clsfrConfig.getChildren();
for (cXMLElementList::iterator dscpElemIt = dscpDetails.begin(); dscpElemIt != dscpDetails.end(); ++dscpElemIt)
{
std::string nodeName = (*dscpElemIt)->getTagName();
if (nodeName == "value")
{
std::string val = (*dscpElemIt)->getNodeValue();
values.push_back(readDscp(val));
infoString += " ";
infoString += val;
}
}
}
| bool ANSAQOS::DSCPClassifier::classifyPacket | ( | cMessage * | msg | ) | [virtual] |
Implements ANSAQOS::Classifier.
Definition at line 257 of file AnsaQosClassifiers.cc.
{
unsigned char tos;
std::vector<unsigned char>::iterator it;
cMessage *copy = msg->dup();
if (dynamic_cast<IPDatagram *>(copy))
{
IPDatagram *datagram = (IPDatagram *)copy;
tos = datagram->getDiffServCodePoint();
}
delete copy;
for(it = values.begin(); it != values.end(); ++it )
{
if (*it == tos)
return true;
}
return false;
}
| virtual std::string ANSAQOS::DSCPClassifier::info | ( | ) | [inline, virtual] |
Implements ANSAQOS::Classifier.
Definition at line 116 of file AnsaQosClassifiers.h.
{return infoString;}
| unsigned char ANSAQOS::DSCPClassifier::readDscp | ( | std::string | dscpString | ) |
Definition at line 199 of file AnsaQosClassifiers.cc.
{
if(dscpString.size() == 3)
{
std::string prf = dscpString.substr(0,2);
unsigned char cls = dscpString[2] - '0';
if((prf == "CS" || prf == "Cs" || prf == "cs") && cls > 0 && cls < 8)
return cls*32;
}
else if (dscpString.size() == 4)
{
std::string prf = dscpString.substr(0,2);
unsigned char cls = dscpString[2] - '0';
unsigned char dp = dscpString[3] - '0';
if((prf == "AF" || prf == "Af" || prf == "af") && cls > 0 && cls < 5 && dp > 0 && dp < 4)
return cls*32 + dp*8;
}
else if(dscpString == "EF" || dscpString == "Ef" || dscpString == "ef")
return 184;
return atoi(dscpString.c_str());
}
std::string ANSAQOS::DSCPClassifier::infoString [private] |
Definition at line 110 of file AnsaQosClassifiers.h.
Referenced by info().
std::vector<unsigned char> ANSAQOS::DSCPClassifier::values [private] |
Definition at line 109 of file AnsaQosClassifiers.h.