Implemented UDP (and UDPLite) PDML Protocol

This commit is contained in:
Srivats P. 2011-03-31 21:04:05 +05:30
parent a7d28d8a8d
commit e47319feda
2 changed files with 48 additions and 0 deletions

View File

@ -35,6 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
#include "snap.pb.h"
#include "svlan.pb.h"
#include "tcp.pb.h"
#include "udp.pb.h"
#include "vlan.pb.h"
#include <google/protobuf/descriptor.h>
@ -209,6 +210,8 @@ PdmlReader::PdmlReader(OstProto::StreamConfigList *streams)
factory_.insert("llc", PdmlLlcProtocol::createInstance);
factory_.insert("ieee8021ad", PdmlSvlanProtocol::createInstance);
factory_.insert("tcp", PdmlTcpProtocol::createInstance);
factory_.insert("udp", PdmlUdpProtocol::createInstance);
factory_.insert("udplite", PdmlUdpProtocol::createInstance);
factory_.insert("vlan", PdmlVlanProtocol::createInstance);
}
@ -1368,3 +1371,38 @@ void PdmlTcpProtocol::postProtocolHandler(OstProto::Protocol *pbProto,
#endif
}
// ---------------------------------------------------------- //
// PdmlUdpProtocol //
// ---------------------------------------------------------- //
PdmlUdpProtocol::PdmlUdpProtocol()
{
pdmlProtoName_ = "udp"; // OR udplite
ostProtoId_ = OstProto::Protocol::kUdpFieldNumber;
fieldMap_.insert("udp.srcport", OstProto::Udp::kSrcPortFieldNumber);
fieldMap_.insert("udp.dstport", OstProto::Udp::kDstPortFieldNumber);
fieldMap_.insert("udp.length", OstProto::Udp::kTotlenFieldNumber);
fieldMap_.insert("udp.checksum_coverage",
OstProto::Udp::kTotlenFieldNumber);
fieldMap_.insert("udp.checksum", OstProto::Udp::kCksumFieldNumber);
}
PdmlDefaultProtocol* PdmlUdpProtocol::createInstance()
{
return new PdmlUdpProtocol();
}
void PdmlUdpProtocol::postProtocolHandler(OstProto::Protocol *pbProto,
OstProto::Stream *stream)
{
OstProto::Udp *udp = pbProto->MutableExtension(OstProto::udp);
qDebug("Udp: post\n");
udp->set_is_override_src_port(true);
udp->set_is_override_dst_port(true);
udp->set_is_override_totlen(true);
udp->set_is_override_cksum(true);
}

View File

@ -265,4 +265,14 @@ private:
QByteArray segmentData_;
};
class PdmlUdpProtocol : public PdmlDefaultProtocol
{
public:
PdmlUdpProtocol();
static PdmlDefaultProtocol* createInstance();
virtual void postProtocolHandler(OstProto::Protocol *pbProto,
OstProto::Stream *stream);
};
#endif