diff options
Diffstat (limited to 'output/ipfix/ipfix.h')
-rw-r--r-- | output/ipfix/ipfix.h | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/output/ipfix/ipfix.h b/output/ipfix/ipfix.h index cdb5a6f..93945fb 100644 --- a/output/ipfix/ipfix.h +++ b/output/ipfix/ipfix.h @@ -2,6 +2,7 @@ * ipfix.h * * Holger Eitzenberger <holger@eitzenberger.org>, 2009. + * Ander Juaristi <a@juaristi.eus>, 2019 */ #ifndef IPFIX_H #define IPFIX_H @@ -20,17 +21,21 @@ struct ipfix_hdr { uint8_t data[]; } __packed; -#define IPFIX_HDRLEN sizeof(struct ipfix_hdr) +#define IPFIX_HDRLEN sizeof(struct ipfix_hdr) /* * IDs 0-255 are reserved for Template Sets. IDs of Data Sets are > 255. */ struct ipfix_templ_hdr { - uint16_t id; + uint16_t sid; + uint16_t len; + uint16_t tid; uint16_t cnt; uint8_t data[]; } __packed; +#define IPFIX_TEMPL_HDRLEN(nfields) sizeof(struct ipfix_templ_hdr) + (sizeof(uint16_t) * 2 * nfields) + struct ipfix_set_hdr { #define IPFIX_SET_TEMPL 2 #define IPFIX_SET_OPT_TEMPL 3 @@ -46,6 +51,7 @@ struct ipfix_msg { uint8_t *tail; uint8_t *end; unsigned nrecs; + int tid; struct ipfix_set_hdr *last_set; uint8_t data[]; }; @@ -53,18 +59,14 @@ struct ipfix_msg { struct vy_ipfix_data { struct in_addr saddr; struct in_addr daddr; - uint16_t ifi_in; - uint16_t ifi_out; uint32_t packets; uint32_t bytes; uint32_t start; /* Unix time */ uint32_t end; /* Unix time */ uint16_t sport; uint16_t dport; - uint32_t aid; /* Application ID */ uint8_t l4_proto; - uint8_t dscp; - uint16_t __padding; + uint32_t aid; /* Application ID */ } __packed; #define VY_IPFIX_SID 256 @@ -73,13 +75,11 @@ struct vy_ipfix_data { #define VY_IPFIX_PKT_LEN (IPFIX_HDRLEN + IPFIX_SET_HDRLEN \ + VY_IPFIX_FLOWS * sizeof(struct vy_ipfix_data)) -/* template management */ -size_t ipfix_rec_len(uint16_t); - /* message handling */ -struct ipfix_msg *ipfix_msg_alloc(size_t, uint32_t); +struct ipfix_msg *ipfix_msg_alloc(size_t, uint32_t, int); void ipfix_msg_free(struct ipfix_msg *); struct ipfix_hdr *ipfix_msg_hdr(const struct ipfix_msg *); +struct ipfix_templ_hdr *ipfix_msg_templ_hdr(const struct ipfix_msg *); size_t ipfix_msg_len(const struct ipfix_msg *); void *ipfix_msg_data(struct ipfix_msg *); struct ipfix_set_hdr *ipfix_msg_add_set(struct ipfix_msg *, uint16_t); |