mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-02-02 18:21:06 +02:00
wprobe: export the newly added fields via ipfix
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15065 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
ab6bc07067
commit
7749fd7329
@ -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;
|
||||||
|
|
||||||
g_data.addrs[f++] = &map[i].val->avg;
|
if (map[i].counter)
|
||||||
g_data.addrs[f++] = &map[i].val->stdev;
|
g_data.addrs[f++] = &map[i].val->U32;
|
||||||
g_data.addrs[f++] = &map[i].val->n;
|
else
|
||||||
|
g_data.addrs[f++] = &map[i].val->avg;
|
||||||
|
|
||||||
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…
x
Reference in New Issue
Block a user