wprobe: export the newly added fields via ipfix

SVN-Revision: 15065
master
Felix Fietkau 16 years ago
parent 9dc3c72f0d
commit 43eef5c7ea
  1. 26
      package/wprobe/src/exporter/wprobe-export.c

@ -17,12 +17,14 @@
#include <ipfix.h> #include <ipfix.h>
#include <mlog.h> #include <mlog.h>
#include <wprobe.h> #include <wprobe.h>
#include <stdbool.h>
static ipfix_datarecord_t g_data = { NULL, NULL, 0 }; static ipfix_datarecord_t g_data = { NULL, NULL, 0 };
static int do_close = 0; static int do_close = 0;
struct wprobe_mapping { struct wprobe_mapping {
int id; int id;
bool counter;
float scale; float scale;
const char *wprobe_id; const char *wprobe_id;
struct wprobe_value *val; struct wprobe_value *val;
@ -35,11 +37,22 @@ struct wprobe_mapping {
#define WMAP(_id, _name, ...) \ #define WMAP(_id, _name, ...) \
{ \ { \
.scale = 1.0f, \ .scale = 1.0f, \
.counter = false, \
.id = IPFIX_FT_WPROBE_##_id##_AVG, \ .id = IPFIX_FT_WPROBE_##_id##_AVG, \
.wprobe_id = _name \ .wprobe_id = _name \
, ## __VA_ARGS__ \ , ## __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 #define WPROBE_OFFSET 2
static struct wprobe_mapping map_globals[] = { static struct wprobe_mapping map_globals[] = {
@ -47,6 +60,8 @@ static struct wprobe_mapping map_globals[] = {
WMAP(PHY_BUSY, "phy_busy"), WMAP(PHY_BUSY, "phy_busy"),
WMAP(PHY_RX, "phy_rx"), WMAP(PHY_RX, "phy_rx"),
WMAP(PHY_TX, "phy_tx"), WMAP(PHY_TX, "phy_tx"),
WMAP_COUNTER(FRAMES, "frames"),
WMAP_COUNTER(PROBEREQ, "probereq"),
}; };
static struct wprobe_mapping map_perlink[] = { 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) if (!map[i].val)
continue; continue;
if (map[i].counter)
g_data.addrs[f++] = &map[i].val->U32;
else
g_data.addrs[f++] = &map[i].val->avg; 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 (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 0, 4) < 0) if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 0, 4) < 0)
exit(1); 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) if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 1, 4) < 0)
exit(1); exit(1);
if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 2, 4) < 0) if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 2, 4) < 0)

Loading…
Cancel
Save