diff options
Diffstat (limited to 'src/vnet/flow/ipfix_packet.h')
-rw-r--r-- | src/vnet/flow/ipfix_packet.h | 206 |
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: - */ |