summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-03-29 04:47:19 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-03-29 04:47:19 +0000
commit43eef5c7ea397bd78da7a525da72587c5eb73fa0 (patch)
treef100e374bc0f8f015aca2910db93d0637e4a6fd1
parent9dc3c72f0d6b9ed0cc66e6eca44f442769057d4f (diff)
downloadmtk-20170518-43eef5c7ea397bd78da7a525da72587c5eb73fa0.zip
mtk-20170518-43eef5c7ea397bd78da7a525da72587c5eb73fa0.tar.gz
mtk-20170518-43eef5c7ea397bd78da7a525da72587c5eb73fa0.tar.bz2
wprobe: export the newly added fields via ipfix
SVN-Revision: 15065
-rw-r--r--package/wprobe/src/exporter/wprobe-export.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/package/wprobe/src/exporter/wprobe-export.c b/package/wprobe/src/exporter/wprobe-export.c
index 974f4a1..e9aa3de 100644
--- a/package/wprobe/src/exporter/wprobe-export.c
+++ b/package/wprobe/src/exporter/wprobe-export.c
@@ -17,12 +17,14 @@
#include <ipfix.h>
#include <mlog.h>
#include <wprobe.h>
+#include <stdbool.h>
static ipfix_datarecord_t g_data = { NULL, NULL, 0 };
static int do_close = 0;
struct wprobe_mapping {
int id;
+ bool counter;
float scale;
const char *wprobe_id;
struct wprobe_value *val;
@@ -35,11 +37,22 @@ struct wprobe_mapping {
#define WMAP(_id, _name, ...) \
{ \
.scale = 1.0f, \
+ .counter = false, \
.id = IPFIX_FT_WPROBE_##_id##_AVG, \
.wprobe_id = _name \
, ## __VA_ARGS__ \
}
+#define WMAP_COUNTER(_id, _name, ...) \
+ { \
+ .scale = 1.0f, \
+ .counter = true, \
+ .id = IPFIX_FT_WPROBE_##_id, \
+ .wprobe_id = _name \
+ , ## __VA_ARGS__ \
+ }
+
+
#define WPROBE_OFFSET 2
static struct wprobe_mapping map_globals[] = {
@@ -47,6 +60,8 @@ static struct wprobe_mapping map_globals[] = {
WMAP(PHY_BUSY, "phy_busy"),
WMAP(PHY_RX, "phy_rx"),
WMAP(PHY_TX, "phy_tx"),
+ WMAP_COUNTER(FRAMES, "frames"),
+ WMAP_COUNTER(PROBEREQ, "probereq"),
};
static struct wprobe_mapping map_perlink[] = {
@@ -129,12 +144,19 @@ add_template_fields(ipfix_t *handle, ipfix_template_t *t, struct wprobe_mapping
if (!map[i].val)
continue;
- g_data.addrs[f++] = &map[i].val->avg;
- g_data.addrs[f++] = &map[i].val->stdev;
- g_data.addrs[f++] = &map[i].val->n;
+ if (map[i].counter)
+ g_data.addrs[f++] = &map[i].val->U32;
+ else
+ g_data.addrs[f++] = &map[i].val->avg;
if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 0, 4) < 0)
exit(1);
+
+ if (map[i].counter)
+ continue;
+
+ g_data.addrs[f++] = &map[i].val->stdev;
+ g_data.addrs[f++] = &map[i].val->n;
if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 1, 4) < 0)
exit(1);
if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 2, 4) < 0)