Skip to content

Commit c87ee97

Browse files
committed
ndp input plugin - remove plugin error exception
1 parent e0a38d2 commit c87ee97

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

input/ndp.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

145146
InputPlugin::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
}

input/ndp.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class NdpPacketReader : public InputPlugin
7878
struct RxStats {
7979
uint64_t receivedPackets;
8080
uint64_t receivedBytes;
81+
uint64_t bad_metadata;
8182
};
8283

8384
telemetry::Content get_queue_telemetry();
@@ -88,7 +89,7 @@ class NdpPacketReader : public InputPlugin
8889
bool m_ctt_metadata = false;
8990

9091
void init_ifc(const std::string &dev);
91-
void parse_ctt_metadata(const ndp_packet *ndp_packet, Metadata_CTT &ctt);
92+
int parse_ctt_metadata(const ndp_packet *ndp_packet, Metadata_CTT &ctt);
9293
};
9394

9495
}

0 commit comments

Comments
 (0)