diff --git a/common/pdml_p.cpp b/common/pdml_p.cpp
index dc9cc8d..a639901 100644
--- a/common/pdml_p.cpp
+++ b/common/pdml_p.cpp
@@ -35,6 +35,7 @@ along with this program. If not, see
#include "snap.pb.h"
#include "svlan.pb.h"
#include "tcp.pb.h"
+#include "udp.pb.h"
#include "vlan.pb.h"
#include
@@ -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);
+}
+
diff --git a/common/pdml_p.h b/common/pdml_p.h
index 2220898..94de053 100644
--- a/common/pdml_p.h
+++ b/common/pdml_p.h
@@ -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