.f_json_print = json_print_net_udp_stats,
.f_svg_print = svg_print_net_udp_stats,
.f_raw_print = raw_print_net_udp_stats,
+ .f_pcp_print = pcp_print_net_udp_stats,
.f_count_new = NULL,
.item_list = NULL,
.desc = "UDPv4 traffic statistics",
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
#endif /* HAVE_PCP */
}
+
+/*
+ ***************************************************************************
+ * Define PCP metrics for UDP network statistics.
+ ***************************************************************************
+ */
+void pcp_def_net_udp_metrics(void)
+{
+#ifdef HAVE_PCP
+ pmiAddMetric("network.snmp.udp.udpInDatagrams",
+ PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+
+ pmiAddMetric("network.snmp.udp.udpOutDatagrams",
+ PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+
+ pmiAddMetric("network.snmp.udp.udpNoPorts",
+ PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+
+ pmiAddMetric("network.snmp.udp.udpInErrors",
+ PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+#endif /* HAVE_PCP */
+}
void pcp_def_net_eicmp_metrics(void);
void pcp_def_net_tcp_metrics(void);
void pcp_def_net_etcp_metrics(void);
+void pcp_def_net_udp_metrics(void);
/* Define domains number */
#define PM_INDOM_CPU 0
pmiPutValue("network.snmp.tcp.tcpOutRsts", NULL, buf);
#endif /* HAVE_PCP */
}
+
+/*
+ ***************************************************************************
+ * Display UDP network statistics in PCP format.
+ *
+ * IN:
+ * @a Activity structure with statistics.
+ * @curr Index in array for current sample statistics.
+ * @itv Interval of time in 1/100th of a second.
+ * @record_hdr Record header for current sample.
+ ***************************************************************************
+ */
+__print_funct_t pcp_print_net_udp_stats(struct activity *a, int curr, unsigned long long itv,
+ struct record_header *record_hdr)
+{
+#ifdef HAVE_PCP
+ char buf[64];
+ struct stats_net_udp
+ *snuc = (struct stats_net_udp *) a->buf[curr],
+ *snup = (struct stats_net_udp *) a->buf[!curr];
+
+ snprintf(buf, sizeof(buf), "%f",
+ S_VALUE(snup->InDatagrams, snuc->InDatagrams, itv));
+ pmiPutValue("network.snmp.udp.udpInDatagrams", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%f",
+ S_VALUE(snup->OutDatagrams, snuc->OutDatagrams, itv));
+ pmiPutValue("network.snmp.udp.udpOutDatagrams", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%f",
+ S_VALUE(snup->NoPorts, snuc->NoPorts, itv));
+ pmiPutValue("network.snmp.udp.udpNoPorts", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%f",
+ S_VALUE(snup->InErrors, snuc->InErrors, itv));
+ pmiPutValue("network.snmp.udp.udpInErrors", NULL, buf);
+#endif /* HAVE_PCP */
+}
(struct activity *, int, unsigned long long, struct record_header *);
__print_funct_t pcp_print_net_etcp_stats
(struct activity *, int, unsigned long long, struct record_header *);
+__print_funct_t pcp_print_net_udp_stats
+ (struct activity *, int, unsigned long long, struct record_header *);
#endif /* _PCP_STATS_H */
case A_NET_ETCP:
pcp_def_net_etcp_metrics();
break;
+
+ case A_NET_UDP:
+ pcp_def_net_udp_metrics();
+ break;
}
}
}