@@ -62,6 +62,7 @@ telemetry::Content NdpPacketReader::get_queue_telemetry()
6262 telemetry::Dict dict;
6363 dict[" received_packets" ] = m_stats.receivedPackets ;
6464 dict[" received_bytes" ] = m_stats.receivedBytes ;
65+ dict[" bad_metadata" ] = m_stats.bad_metadata ;
6566 return dict;
6667}
6768
@@ -110,10 +111,10 @@ void NdpPacketReader::init_ifc(const std::string &dev)
110111 }
111112}
112113
113- void NdpPacketReader::parse_ctt_metadata (const ndp_packet *ndp_packet, Metadata_CTT &ctt)
114+ int NdpPacketReader::parse_ctt_metadata (const ndp_packet *ndp_packet, Metadata_CTT &ctt)
114115{
115116 if (ndp_packet->header_length != 32 ) {
116- throw PluginError ( " Metadata bad length, cannot parse, length: " + std::to_string (ndp_packet-> header_length )) ;
117+ return - 1 ;
117118 }
118119 const uint8_t *metadata = ndp_packet->header ;
119120
@@ -139,7 +140,7 @@ void NdpPacketReader::parse_ctt_metadata(const ndp_packet *ndp_packet, Metadata_
139140 ctt.l3_ptype = static_cast <L3PType>(extract (metadata, 220 , 4 ));
140141 ctt.l4_ptype = static_cast <L4PType>(extract (metadata, 224 , 4 ));
141142
142- return ;
143+ return 0 ;
143144}
144145
145146InputPlugin::Result NdpPacketReader::get (PacketBlock &packets)
@@ -165,8 +166,13 @@ InputPlugin::Result NdpPacketReader::get(PacketBlock &packets)
165166 read_pkts++;
166167 if (m_ctt_metadata) {
167168 Metadata_CTT ctt;
168- parse_ctt_metadata (ndp_packet, ctt);
169- parse_packet_ctt_metadata (&opt, m_parser_stats, ctt, ndp_packet->data , ndp_packet->data_length , ndp_packet->data_length );
169+ int ret = parse_ctt_metadata (ndp_packet, ctt);
170+ if (ret == -1 ) {
171+ m_stats.bad_metadata ++;
172+ parse_packet (&opt, m_parser_stats, timestamp, ndp_packet->data , ndp_packet->data_length , ndp_packet->data_length );
173+ } else {
174+ parse_packet_ctt_metadata (&opt, m_parser_stats, ctt, ndp_packet->data , ndp_packet->data_length , ndp_packet->data_length );
175+ }
170176 } else {
171177 parse_packet (&opt, m_parser_stats, timestamp, ndp_packet->data , ndp_packet->data_length , ndp_packet->data_length );
172178 }
0 commit comments