#include <IClassifier.h>
Public Member Functions | |
virtual | ~IClassifier () |
virtual bool | lookupLabel (IPDatagram *ipdatagram, LabelOpVector &outLabel, std::string &outInterface, int &color)=0 |
This is an abstract interface for packet classifiers in MPLS ingress routers. The MPLS module holds a pointer to an IClassifier object, and uses it to classify IP datagrams and find the right label-switched path for them.
A known sub-interface is IRSVPClassifier.
Known concrete classifier classes are the LDP module class and (via IRSVPClassifier) RSVP_TE's SimpleClassifier module class.
Definition at line 33 of file IClassifier.h.
virtual IClassifier::~IClassifier | ( | ) | [inline, virtual] |
Definition at line 24 of file IClassifier.h.
{
virtual bool IClassifier::lookupLabel | ( | IPDatagram * | ipdatagram, | |
LabelOpVector & | outLabel, | |||
std::string & | outInterface, | |||
int & | color | |||
) | [pure virtual] |
The ipdatagram argument is an input parameter, the rest (outLabel, outInterface, color) are output parameters only.
In subclasses, this function should be implemented to determine the forwarding equivalence class for the IP datagram passed, and map it to an outLabel and outInterface.
The color parameter (which can be set to an arbitrary value) will only be used for the NAM trace if one will be recorded.
Implemented in SimpleClassifier.
Referenced by MPLS::tryLabelAndForwardIPDatagram().