X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp%2Fstats%2Fstats.h;h=167b09bd11cdb52853243255a1c78835201c2125;hb=8a19f12a0cfe6d611f6e266931af691fb69a74ad;hp=024dc78e447d026c83ed6d8c760d5c8b8b35592a;hpb=49d66f1f42cbc310e4fa0dc526b9fdb91d0ca220;p=vpp.git diff --git a/src/vpp/stats/stats.h b/src/vpp/stats/stats.h index 024dc78e447..167b09bd11c 100644 --- a/src/vpp/stats/stats.h +++ b/src/vpp/stats/stats.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,44 @@ typedef struct int tag; } data_structure_lock_t; +typedef struct +{ + vpe_client_registration_t client; + u8 stats_registrations; +#define INTERFACE_SIMPLE_COUNTERS (1 << 0) +#define INTERFACE_COMBINED_COUNTERS (1 << 1) +#define IP4_FIB_COUNTERS (1 << 2) +#define IP4_NBR_COUNTERS (1 << 3) +#define IP6_FIB_COUNTERS (1 << 4) +#define IP6_NBR_COUNTERS (1 << 5) + +} vpe_client_stats_registration_t; + +/* from .../vnet/vnet/ip/lookup.c. Yuck */ +typedef CLIB_PACKED (struct + { + ip4_address_t address; +u32 address_length: 6; +u32 index: 26; + }) ip4_route_t; + +typedef struct +{ + ip6_address_t address; + u32 address_length; + u32 index; +} ip6_route_t; + + +typedef struct +{ + ip4_route_t *ip4routes; + ip6_route_t *ip6routes; + fib_table_t **fibs; + hash_pair_t **pvec; + uword *results; +} do_ip46_fibs_t; + typedef struct { void *mheap; @@ -45,7 +84,8 @@ typedef struct u32 enable_poller; uword *stats_registration_hash; - vpe_client_registration_t *stats_registrations; + vpe_client_stats_registration_t *stats_registrations; + vpe_client_stats_registration_t **regs; /* control-plane data structure lock */ data_structure_lock_t *data_structure_lock; @@ -53,6 +93,9 @@ typedef struct /* bail out of FIB walk if set */ clib_longjmp_t jmp_buf; + /* Vectors for Distribution funcs: do_ip4_fibs and do_ip6_fibs. */ + do_ip46_fibs_t do_ip46_fibs; + /* convenience */ vlib_main_t *vlib_main; vnet_main_t *vnet_main;