struct wprobe_mapping {
int id;
bool counter;
- float scale;
const char *wprobe_id;
struct wprobe_value *val;
};
#define WMAP(_id, _name, ...) \
{ \
- .scale = 1.0f, \
.counter = false, \
- .id = IPFIX_FT_WPROBE_##_id##_AVG, \
+ .id = IPFIX_FT_WPROBE_##_id##_N, \
.wprobe_id = _name \
, ## __VA_ARGS__ \
}
#define WMAP_COUNTER(_id, _name, ...) \
{ \
- .scale = 1.0f, \
.counter = true, \
.id = IPFIX_FT_WPROBE_##_id, \
.wprobe_id = _name \
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->n;
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)
+ g_data.lens[f] = 8;
+ g_data.addrs[f++] = &map[i].val->s;
+
+ g_data.lens[f] = 8;
+ g_data.addrs[f++] = &map[i].val->ss;
+ if (ipfix_add_field( handle, t, FOKUS_USERID, map[i].id + 1, 8) < 0)
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, 8) < 0)
exit(1);
}
g_data.maxfields = f;
int port = IPFIX_PORTNO;
int verbose_level = 0;
int opt, i = 10;
+ char *err = NULL;
while ((opt = getopt(argc, argv, "hi:c:p:vstu")) != EOF) {
switch (opt) {
return -1;
}
- dev = wprobe_get_dev(ifname);
+ dev = wprobe_get_auto(ifname, &err);
if (!dev || (list_empty(&dev->global_attr) && list_empty(&dev->link_attr))) {
- fprintf(stderr, "Cannot connect to wprobe on interface '%s'\n", ifname);
+ fprintf(stderr, "Cannot connect to wprobe on interface '%s': %s\n", ifname, (err ? err : "Unknown error"));
return -1;
}