/* \summary: sFlow protocol printer */
-/* specification: http://www.sflow.org/developers/specifications.php */
+/* specification: https://sflow.org/developers/specifications.php */
#ifdef HAVE_CONFIG_H
#include <config.h>
tptr = pptr;
tlen = len;
sflow_datagram = (const struct sflow_datagram_t *)pptr;
+ if (len < sizeof(struct sflow_datagram_t)) {
+ ND_PRINT("sFlowv%u", GET_BE_U_4(sflow_datagram->version));
+ ND_PRINT(" [length %u < %zu]", len, sizeof(struct sflow_datagram_t));
+ nd_print_invalid(ndo);
+ return;
+ }
ND_TCHECK_SIZE(sflow_datagram);
/*
ND_PRINT("sFlowv%u, %s agent %s, agent-id %u, length %u",
GET_BE_U_4(sflow_datagram->version),
GET_BE_U_4(sflow_datagram->ip_version) == 1 ? "IPv4" : "IPv6",
- ipaddr_string(ndo, sflow_datagram->agent),
+ GET_IPADDR_STRING(sflow_datagram->agent),
GET_BE_U_4(sflow_datagram->agent_id),
len);
return;
ND_PRINT("sFlowv%u, %s agent %s, agent-id %u, seqnum %u, uptime %u, samples %u, length %u",
GET_BE_U_4(sflow_datagram->version),
GET_BE_U_4(sflow_datagram->ip_version) == 1 ? "IPv4" : "IPv6",
- ipaddr_string(ndo, sflow_datagram->agent),
+ GET_IPADDR_STRING(sflow_datagram->agent),
GET_BE_U_4(sflow_datagram->agent_id),
GET_BE_U_4(sflow_datagram->seqnum),
GET_BE_U_4(sflow_datagram->uptime),