summaryrefslogtreecommitdiffstats
path: root/src/vnet/flow/ipfix_packet.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/flow/ipfix_packet.h')
-rw-r--r--src/vnet/flow/ipfix_packet.h206
1 files changed, 0 insertions, 206 deletions
diff --git a/src/vnet/flow/ipfix_packet.h b/src/vnet/flow/ipfix_packet.h
deleted file mode 100644
index a50d86ea379..00000000000
--- a/src/vnet/flow/ipfix_packet.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef __included_ipfix_packet_h__
-#define __included_ipfix_packet_h__
-
-#include <vnet/flow/ipfix_info_elements.h>
-
-/* From RFC-7011:
- * https://tools.ietf.org/html/rfc7011
- */
-
-typedef struct
-{
- u32 version_length;
- u32 export_time;
- u32 sequence_number;
- u32 domain_id;
-} ipfix_message_header_t;
-
-static inline u32
-version_length (u16 length)
-{
- return clib_host_to_net_u32 (0x000a0000 | length);
-}
-
-
-/*
- * The Field Specifier format is shown in Figure G.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |E| Information Element ident. | Field Length |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Enterprise Number |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * Figure G: Field Specifier Format
- *
- * Where:
- *
- * E
- *
- * Enterprise bit. This is the first bit of the Field Specifier. If
- * this bit is zero, the Information Element identifier identifies an
- * Information Element in [IANA-IPFIX], and the four-octet Enterprise
- * Number field MUST NOT be present. If this bit is one, the
- * Information Element identifier identifies an enterprise-specific
- * Information Element, and the Enterprise Number field MUST be
- * present.
- */
-
-typedef struct
-{
- u32 e_id_length;
- u32 enterprise;
-} ipfix_enterprise_field_specifier_t;
-
-typedef struct
-{
- u32 e_id_length;
-} ipfix_field_specifier_t;
-
-static inline u32
-ipfix_e_id_length (int e, u16 id, u16 length)
-{
- u32 value;
- value = (e << 31) | ((id & 0x7FFF) << 16) | length;
- return clib_host_to_net_u32 (value);
-}
-
-/*
- * Every Set contains a common header. This header is defined in
- * Figure I.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Set ID | Length |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * Figure I: Set Header Format
- *
- * Each Set Header field is exported in network format. The fields are
- * defined as follows:
- *
- * Set ID
- *
- * Identifies the Set. A value of 2 is reserved for Template Sets.
- * A value of 3 is reserved for Options Template Sets. Values from 4
- * to 255 are reserved for future use. Values 256 and above are used
- * for Data Sets. The Set ID values of 0 and 1 are not used, for
- * historical reasons [RFC3954].
- *
- * Length
- *
- * Total length of the Set, in octets, including the Set Header, all
- * records, and the optional padding. Because an individual Set MAY
- * contain multiple records, the Length value MUST be used to
- * determine the position of the next Set.
- */
-
-typedef struct
-{
- u32 set_id_length;
-} ipfix_set_header_t;
-
-static inline u32
-ipfix_set_id_length (u16 set_id, u16 length)
-{
- return clib_host_to_net_u32 ((set_id << 16) | length);
-}
-
-/*
- * The format of the Template Record is shown in Figure J. It consists
- * of a Template Record Header and one or more Field Specifiers. Field
- * Specifiers are defined in Figure G above.
- *
- * +--------------------------------------------------+
- * | Template Record Header |
- * +--------------------------------------------------+
- * | Field Specifier |
- * +--------------------------------------------------+
- * | Field Specifier |
- * +--------------------------------------------------+
- * ...
- * +--------------------------------------------------+
- * | Field Specifier |
- * +--------------------------------------------------+
- *
- * Figure J: Template Record Format
- *
- * The format of the Template Record Header is shown in Figure K.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Template ID (> 255) | Field Count |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * Figure K: Template Record Header Format
- *
- * The Template Record Header Field definitions are as follows:
- *
- * Template ID
- *
- * Each Template Record is given a unique Template ID in the range
- * 256 to 65535. This uniqueness is local to the Transport Session
- * and Observation Domain that generated the Template ID. Since
- * Template IDs are used as Set IDs in the Sets they describe (see
- * Section 3.4.3), values 0-255 are reserved for special Set types
- * (e.g., Template Sets themselves), and Templates and Options
- * Templates (see Section 3.4.2) cannot share Template IDs within a
- * Transport Session and Observation Domain. There are no
- * constraints regarding the order of the Template ID allocation. As
- * Exporting Processes are free to allocate Template IDs as they see
- * fit, Collecting Processes MUST NOT assume incremental Template
- * IDs, or anything about the contents of a Template based on its
- * Template ID alone.
- *
- * Field Count
- *
- * Number of fields in this Template Record.
- */
-
-typedef struct
-{
- u32 id_count;
-} ipfix_template_header_t;
-
-static inline u32
-ipfix_id_count (u16 id, u16 count)
-{
- return clib_host_to_net_u32 ((id << 16) | count);
-}
-
-/* Template packet */
-typedef struct
-{
- ipfix_message_header_t h;
- ipfix_set_header_t s;
- ipfix_template_header_t t;
- ipfix_field_specifier_t fields[0];
-} ipfix_template_packet_t;
-
-#endif /* __included_ipfix_packet_h__ */
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */