aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/ipsec-gre/ipsec_gre_doc.md
blob: e1bb9cdab1a4f9ef4875b623cf965328127df245 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# VPP L2-GRE over IPsec implementation    {#ipsec_gre_doc}

This is a memo intended to contain documentation of the VPP L2-GRE over IPsec implementation.
Everything that is not directly obvious should come here.


## L2-GRE over IPsec
GRE encapsulate layer 2 traffic and IPSec encrypt what is encapsulated by GRE. The whole point of L2-GRE over IPSec is to tunnel layer 2 over GRE and IPSec by bridging the physical interface with IPSec-GRE tunnel interface.

There are 2 dedicated nodes for encapsulation:
* ipsec-gre<n>-tx - add GRE header
* esp-encrypt - encrypt GRE packet to ESP packet

There are 3 dedicated nodes for decapsulation:
* ipsec-if-input - match IPSec SA by source IP address and SPI in ESP packet
* esp-decrypt - decrypt ESP packet
* ipsec-gre-input - remove GRE header


### Configuration

L2-GRE over IPsec support the following CLI configuration command:
    create ipsec gre tunnel src <addr> dst <addr> local-sa <id> remote-sa <id> [del]

src: tunnel source IPv4 address
dst: tunnel destination IPv4 address
local-sa: tunnel local IPSec Security Association
remote-sa: tunnel remote IPSec Security Association
del: delete IPSec-GRE tunnel

L2-GRE over IPsec support the following API configuration command:
    ipsec_gre_add_del_tunnel src <addr> dst <addr> local_sa <sa-id> remote_sa <sa-id> [del]

src: tunnel source IPv4 address
dst: tunnel destination IPv4 address
local_sa: tunnel local IPSec Security Association
remote_sa: tunnel remote IPSec Security Association
del: delete IPSec-GRE tunnel


### Configuration example

Interface GigabitEthernet0/9/0 is in bridge with ipsec-gre0 tunnel interface, interface GigabitEthernet0/8/0 sending encapsulated and encrypted traffic.

Configure IPv4 address on sending interface:
set int ip address GigabitEthernet0/8/0 192.168.1.1/24

Configure IPSec Security Associations:
ipsec sa add 10 spi 1001 esp crypto-key 4a506a794f574265564551694d653768 crypto-alg aes-cbc-128 integ-key 4339314b55523947594d6d3547666b45764e6a58 integ-alg sha1-96
ipsec sa add 20 spi 1000 esp crypto-key 49517065716d6235726c734a4372466c crypto-alg aes-cbc-128 integ-key 307439636a5542735133595835546f68534e4f64 integ-alg sha1-96

Create IPSec-GRE tunnel:
create ipsec gre tunnel src 192.168.1.1 dst 192.168.1.2 local-sa 10 remote-sa 20

Set interfaces state:
set int state GigabitEthernet0/8/0 up
set int state GigabitEthernet0/9/0 up
set int state ipsec-gre0 up

Bridge physical interface with IPSec-GRE tunnel interface:
set interface l2 bridge GigabitEthernet0/9/0 1
set interface l2 bridge ipsec-gre0 1


### Operational data

L2-GRE over IPsec support the following CLI show command:
    show ipsec gre tunnel

L2-GRE over IPsec support the following API dump command:
    ipsec_gre_tunnel_dump [sw_if_index <nn>]

sw_if_index: software interface index of the IPSec-GRE tunnel interface
ht .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * 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_info_elements_h__
#define __included_ipfix_info_elements_h__

#define foreach_ipfix_info_element_t                                    \
_(octetDeltaCount, 1, u64)                                              \
_(packetDeltaCount, 2, u64)                                             \
_(deltaFlowCount, 3, u64)                                               \
_(protocolIdentifier, 4, u8)                                            \
_(ipClassOfService, 5, u8)                                              \
_(tcpControlBits, 6, u16)                                               \
_(sourceTransportPort, 7, u16)                                          \
_(sourceIPv4Address, 8, ip4_address_t)                                  \
_(sourceIPv4PrefixLength, 9, u8)                                        \
_(ingressInterface, 10, u32)                                            \
_(destinationTransportPort, 11, u16)                                    \
_(destinationIPv4Address, 12, ip4_address_t)                            \
_(destinationIPv4PrefixLength, 13, u8)                                  \
_(egressInterface, 14, u32)                                             \
_(ipNextHopIPv4Address, 15, ip4_address_t)                              \
_(bgpSourceAsNumber, 16, u32)                                           \
_(bgpDestinationAsNumber, 17, u32)                                      \
_(bgpNextHopIPv4Address, 18, ip4_address_t)                             \
_(postMCastPacketDeltaCount, 19, u64)                                   \
_(postMCastOctetDeltaCount, 20, u64)                                    \
_(flowEndSysUpTime, 21, u32)                                            \
_(flowStartSysUpTime, 22, u32)                                          \
_(postOctetDeltaCount, 23, u64)                                         \
_(postPacketDeltaCount, 24, u64)                                        \
_(minimumIpTotalLength, 25, u64)                                        \
_(maximumIpTotalLength, 26, u64)                                        \
_(sourceIPv6Address, 27, ip6_address_t)                                 \
_(destinationIPv6Address, 28, ip6_address_t)                            \
_(sourceIPv6PrefixLength, 29, u8)                                       \
_(destinationIPv6PrefixLength, 30, u8)                                  \
_(flowLabelIPv6, 31, u32)                                               \
_(icmpTypeCodeIPv4, 32, u16)                                            \
_(igmpType, 33, u8)                                                     \
_(samplingInterval, 34, u32)                                            \
_(samplingAlgorithm, 35, u8)                                            \
_(flowActiveTimeout, 36, u16)                                           \
_(flowIdleTimeout, 37, u16)                                             \
_(engineType, 38, u8)                                                   \
_(engineId, 39, u8)                                                     \
_(exportedOctetTotalCount, 40, u64)                                     \
_(exportedMessageTotalCount, 41, u64)                                   \
_(exportedFlowRecordTotalCount, 42, u64)                                \
_(ipv4RouterSc, 43, ip4_address_t)                                      \
_(sourceIPv4Prefix, 44, ip4_address_t)                                  \
_(destinationIPv4Prefix, 45, ip4_address_t)                             \
_(mplsTopLabelType, 46, u8)                                             \
_(mplsTopLabelIPv4Address, 47, ip4_address_t)                           \
_(samplerId, 48, u8)                                                    \
_(samplerMode, 49, u8)                                                  \
_(samplerRandomInterval, 50, u32)                                       \
_(classId, 51, u8)                                                      \
_(minimumTTL, 52, u8)                                                   \
_(maximumTTL, 53, u8)                                                   \
_(fragmentIdentification, 54, u32)                                      \
_(postIpClassOfService, 55, u8)                                         \
_(sourceMacAddress, 56, macAddress)                                     \
_(postDestinationMacAddress, 57, macAddress)                            \
_(vlanId, 58, u16)                                                      \
_(postVlanId, 59, u16)                                                  \
_(ipVersion, 60, u8)                                                    \
_(flowDirection, 61, u8)                                                \
_(ipNextHopIPv6Address, 62, ip6_address_t)                              \
_(bgpNextHopIPv6Address, 63, ip6_address_t)                             \
_(ipv6ExtensionHeaders, 64, u32)                                        \
_(mplsTopLabelStackSection, 70, octetArray)                             \
_(mplsLabelStackSection2, 71, octetArray)                               \
_(mplsLabelStackSection3, 72, octetArray)                               \
_(mplsLabelStackSection4, 73, octetArray)                               \
_(mplsLabelStackSection5, 74, octetArray)                               \
_(mplsLabelStackSection6, 75, octetArray)                               \
_(mplsLabelStackSection7, 76, octetArray)                               \
_(mplsLabelStackSection8, 77, octetArray)                               \
_(mplsLabelStackSection9, 78, octetArray)                               \
_(mplsLabelStackSection10, 79, octetArray)                              \
_(destinationMacAddress, 80, macAddress)                                \
_(postSourceMacAddress, 81, macAddress)                                 \
_(interfaceName, 82, string)                                            \
_(interfaceDescription, 83, string)                                     \
_(samplerName, 84, string)                                              \
_(octetTotalCount, 85, u64)                                             \
_(packetTotalCount, 86, u64)                                            \
_(flagsAndSamplerId, 87, u32)                                           \
_(fragmentOffset, 88, u16)                                              \
_(forwardingStatus, 89, u32)                                            \
_(mplsVpnRouteDistinguisher, 90, octetArray)                            \
_(mplsTopLabelPrefixLength, 91, u8)                                     \
_(srcTrafficIndex, 92, u32)                                             \
_(dstTrafficIndex, 93, u32)                                             \
_(applicationDescription, 94, string)                                   \
_(applicationId, 95, octetArray)                                        \
_(applicationName, 96, string)                                          \
_(Assigned, 97, for NetFlow v9 compatibility	)                       \
_(postIpDiffServCodePoint, 98, u8)                                      \
_(multicastReplicationFactor, 99, u32)                                  \
_(className, 100, string)                                               \
_(classificationEngineId, 101, u8)                                      \
_(layer2packetSectionOffset, 102, u16)                                  \
_(layer2packetSectionSize, 103, u16)                                    \
_(layer2packetSectionData, 104, octetArray)                             \
_(bgpNextAdjacentAsNumber, 128, u32)                                    \
_(bgpPrevAdjacentAsNumber, 129, u32)                                    \
_(exporterIPv4Address, 130, ip4_address_t)                              \
_(exporterIPv6Address, 131, ip6_address_t)                              \
_(droppedOctetDeltaCount, 132, u64)                                     \
_(droppedPacketDeltaCount, 133, u64)                                    \
_(droppedOctetTotalCount, 134, u64)                                     \
_(droppedPacketTotalCount, 135, u64)                                    \
_(flowEndReason, 136, u8)                                               \
_(commonPropertiesId, 137, u64)                                         \
_(observationPointId, 138, u64)                                         \
_(icmpTypeCodeIPv6, 139, u16)                                           \
_(mplsTopLabelIPv6Address, 140, ip6_address_t)                          \
_(lineCardId, 141, u32)                                                 \
_(portId, 142, u32)                                                     \
_(meteringProcessId, 143, u32)                                          \
_(exportingProcessId, 144, u32)                                         \
_(templateId, 145, u16)                                                 \
_(wlanChannelId, 146, u8)                                               \
_(wlanSSID, 147, string)                                                \
_(flowId, 148, u64)                                                     \
_(observationDomainId, 149, u32)                                        \
_(flowStartSeconds, 150, dateTimeSeconds)                               \
_(flowEndSeconds, 151, dateTimeSeconds)                                 \
_(flowStartMilliseconds, 152, dateTimeMilliseconds)                     \
_(flowEndMilliseconds, 153, dateTimeMilliseconds)                       \
_(flowStartMicroseconds, 154, dateTimeMicroseconds)                     \
_(flowEndMicroseconds, 155, dateTimeMicroseconds)                       \
_(flowStartNanoseconds, 156, dateTimeNanoseconds)                       \
_(flowEndNanoseconds, 157, dateTimeNanoseconds)                         \
_(flowStartDeltaMicroseconds, 158, u32)                                 \
_(flowEndDeltaMicroseconds, 159, u32)                                   \
_(systemInitTimeMilliseconds, 160, dateTimeMilliseconds)                \
_(flowDurationMilliseconds, 161, u32)                                   \
_(flowDurationMicroseconds, 162, u32)                                   \
_(observedFlowTotalCount, 163, u64)                                     \
_(ignoredPacketTotalCount, 164, u64)                                    \
_(ignoredOctetTotalCount, 165, u64)                                     \
_(notSentFlowTotalCount, 166, u64)                                      \
_(notSentPacketTotalCount, 167, u64)                                    \
_(notSentOctetTotalCount, 168, u64)                                     \
_(destinationIPv6Prefix, 169, ip6_address_t)                            \
_(sourceIPv6Prefix, 170, ip6_address_t)                                 \
_(postOctetTotalCount, 171, u64)                                        \
_(postPacketTotalCount, 172, u64)                                       \
_(flowKeyIndicator, 173, u64)                                           \
_(postMCastPacketTotalCount, 174, u64)                                  \
_(postMCastOctetTotalCount, 175, u64)                                   \
_(icmpTypeIPv4, 176, u8)                                                \
_(icmpCodeIPv4, 177, u8)                                                \
_(icmpTypeIPv6, 178, u8)                                                \
_(icmpCodeIPv6, 179, u8)                                                \
_(udpSourcePort, 180, u16)                                              \
_(udpDestinationPort, 181, u16)                                         \
_(tcpSourcePort, 182, u16)                                              \
_(tcpDestinationPort, 183, u16)                                         \
_(tcpSequenceNumber, 184, u32)                                          \
_(tcpAcknowledgementNumber, 185, u32)                                   \
_(tcpWindowSize, 186, u16)                                              \
_(tcpUrgentPointer, 187, u16)                                           \
_(tcpHeaderLength, 188, u8)                                             \
_(ipHeaderLength, 189, u8)                                              \
_(totalLengthIPv4, 190, u16)                                            \
_(payloadLengthIPv6, 191, u16)                                          \
_(ipTTL, 192, u8)                                                       \
_(nextHeaderIPv6, 193, u8)                                              \
_(mplsPayloadLength, 194, u32)                                          \
_(ipDiffServCodePoint, 195, u8)                                         \
_(ipPrecedence, 196, u8)                                                \
_(fragmentFlags, 197, u8)                                               \
_(octetDeltaSumOfSquares, 198, u64)                                     \
_(octetTotalSumOfSquares, 199, u64)                                     \
_(mplsTopLabelTTL, 200, u8)                                             \
_(mplsLabelStackLength, 201, u32)                                       \
_(mplsLabelStackDepth, 202, u32)                                        \
_(mplsTopLabelExp, 203, u8)                                             \
_(ipPayloadLength, 204, u32)                                            \
_(udpMessageLength, 205, u16)                                           \
_(isMulticast, 206, u8)                                                 \
_(ipv4IHL, 207, u8)                                                     \
_(ipv4Options, 208, u32)                                                \
_(tcpOptions, 209, u64)                                                 \
_(paddingOctets, 210, octetArray)                                       \
_(collectorIPv4Address, 211, ip4_address_t)                             \
_(collectorIPv6Address, 212, ip6_address_t)                             \
_(exportInterface, 213, u32)                                            \
_(exportProtocolVersion, 214, u8)                                       \
_(exportTransportProtocol, 215, u8)                                     \
_(collectorTransportPort, 216, u16)                                     \
_(exporterTransportPort, 217, u16)                                      \
_(tcpSynTotalCount, 218, u64)                                           \
_(tcpFinTotalCount, 219, u64)                                           \
_(tcpRstTotalCount, 220, u64)                                           \
_(tcpPshTotalCount, 221, u64)                                           \
_(tcpAckTotalCount, 222, u64)                                           \
_(tcpUrgTotalCount, 223, u64)                                           \
_(ipTotalLength, 224, u64)                                              \
_(postNATSourceIPv4Address, 225, ip4_address_t)                         \
_(postNATDestinationIPv4Address, 226, ip4_address_t)                    \
_(postNAPTSourceTransportPort, 227, u16)                                \
_(postNAPTDestinationTransportPort, 228, u16)                           \
_(natOriginatingAddressRealm, 229, u8)                                  \
_(natEvent, 230, u8)                                                    \
_(initiatorOctets, 231, u64)                                            \
_(responderOctets, 232, u64)                                            \
_(firewallEvent, 233, u8)                                               \
_(ingressVRFID, 234, u32)                                               \
_(egressVRFID, 235, u32)                                                \
_(VRFname, 236, string)                                                 \
_(postMplsTopLabelExp, 237, u8)                                         \
_(tcpWindowScale, 238, u16)                                             \
_(biflowDirection, 239, u8)                                             \
_(ethernetHeaderLength, 240, u8)                                        \
_(ethernetPayloadLength, 241, u16)                                      \
_(ethernetTotalLength, 242, u16)                                        \
_(dot1qVlanId, 243, u16)                                                \
_(dot1qPriority, 244, u8)                                               \
_(dot1qCustomerVlanId, 245, u16)                                        \
_(dot1qCustomerPriority, 246, u8)                                       \
_(metroEvcId, 247, string)                                              \
_(metroEvcType, 248, u8)                                                \
_(pseudoWireId, 249, u32)                                               \
_(pseudoWireType, 250, u16)                                             \
_(pseudoWireControlWord, 251, u32)                                      \
_(ingressPhysicalInterface, 252, u32)                                   \
_(egressPhysicalInterface, 253, u32)                                    \
_(postDot1qVlanId, 254, u16)                                            \
_(postDot1qCustomerVlanId, 255, u16)                                    \
_(ethernetType, 256, u16)                                               \
_(postIpPrecedence, 257, u8)                                            \
_(collectionTimeMilliseconds, 258, dateTimeMilliseconds)                \
_(exportSctpStreamId, 259, u16)                                         \
_(maxExportSeconds, 260, dateTimeSeconds)                               \
_(maxFlowEndSeconds, 261, dateTimeSeconds)                              \
_(messageMD5Checksum, 262, octetArray)                                  \
_(messageScope, 263, u8)                                                \
_(minExportSeconds, 264, dateTimeSeconds)                               \
_(minFlowStartSeconds, 265, dateTimeSeconds)                            \
_(opaqueOctets, 266, octetArray)                                        \
_(sessionScope, 267, u8)                                                \
_(maxFlowEndMicroseconds, 268, dateTimeMicroseconds)                    \
_(maxFlowEndMilliseconds, 269, dateTimeMilliseconds)                    \
_(maxFlowEndNanoseconds, 270, dateTimeNanoseconds)                      \
_(minFlowStartMicroseconds, 271, dateTimeMicroseconds)                  \
_(minFlowStartMilliseconds, 272, dateTimeMilliseconds)                  \
_(minFlowStartNanoseconds, 273, dateTimeNanoseconds)                    \
_(collectorCertificate, 274, octetArray)                                \
_(exporterCertificate, 275, octetArray)                                 \
_(dataRecordsReliability, 276, boolean)                                 \
_(observationPointType, 277, u8)                                        \
_(newConnectionDeltaCount, 278, u32)                                    \
_(connectionSumDurationSeconds, 279, u64)                               \
_(connectionTransactionId, 280, u64)                                    \
_(postNATSourceIPv6Address, 281, ip6_address_t)                         \
_(postNATDestinationIPv6Address, 282, ip6_address_t)                    \
_(natPoolId, 283, u32)                                                  \
_(natPoolName, 284, string)                                             \
_(anonymizationFlags, 285, u16)                                         \
_(anonymizationTechnique, 286, u16)                                     \
_(informationElementIndex, 287, u16)                                    \
_(p2pTechnology, 288, string)                                           \
_(tunnelTechnology, 289, string)                                        \
_(encryptedTechnology, 290, string)                                     \
_(basicList, 291, basicList)                                            \
_(subTemplateList, 292, subTemplateList)                                \
_(subTemplateMultiList, 293, subTemplateMultiList)                      \
_(bgpValidityState, 294, u8)                                            \
_(IPSecSPI, 295, u32)                                                   \
_(greKey, 296, u32)                                                     \
_(natType, 297, u8)                                                     \
_(initiatorPackets, 298, u64)                                           \
_(responderPackets, 299, u64)                                           \
_(observationDomainName, 300, string)                                   \
_(selectionSequenceId, 301, u64)                                        \
_(selectorId, 302, u64)                                                 \
_(informationElementId, 303, u16)                                       \
_(selectorAlgorithm, 304, u16)                                          \
_(samplingPacketInterval, 305, u32)                                     \
_(samplingPacketSpace, 306, u32)                                        \
_(samplingTimeInterval, 307, u32)                                       \
_(samplingTimeSpace, 308, u32)                                          \
_(samplingSize, 309, u32)                                               \
_(samplingPopulation, 310, u32)                                         \
_(samplingProbability, 311, float64)                                    \
_(dataLinkFrameSize, 312, u16)                                          \
_(ipHeaderPacketSection, 313, octetArray)                               \
_(ipPayloadPacketSection, 314, octetArray)                              \
_(dataLinkFrameSection, 315, octetArray)                                \
_(mplsLabelStackSection, 316, octetArray)                               \
_(mplsPayloadPacketSection, 317, octetArray)                            \
_(selectorIdTotalPktsObserved, 318, u64)                                \
_(selectorIdTotalPktsSelected, 319, u64)                                \
_(absoluteError, 320, float64)                                          \
_(relativeError, 321, float64)                                          \
_(observationTimeSeconds, 322, dateTimeSeconds)                         \
_(observationTimeMilliseconds, 323, dateTimeMilliseconds)               \
_(observationTimeMicroseconds, 324, dateTimeMicroseconds)               \
_(observationTimeNanoseconds, 325, dateTimeNanoseconds)                 \
_(digestHashValue, 326, u64)                                            \
_(hashIPPayloadOffset, 327, u64)                                        \
_(hashIPPayloadSize, 328, u64)                                          \
_(hashOutputRangeMin, 329, u64)                                         \
_(hashOutputRangeMax, 330, u64)                                         \
_(hashSelectedRangeMin, 331, u64)                                       \
_(hashSelectedRangeMax, 332, u64)                                       \
_(hashDigestOutput, 333, boolean)                                       \
_(hashInitialiserValue, 334, u64)                                       \
_(selectorName, 335, string)                                            \
_(upperCILimit, 336, float64)                                           \
_(lowerCILimit, 337, float64)                                           \
_(confidenceLevel, 338, float64)                                        \
_(informationElementDataType, 339, u8)                                  \
_(informationElementDescription, 340, string)                           \
_(informationElementName, 341, string)                                  \
_(informationElementRangeBegin, 342, u64)                               \
_(informationElementRangeEnd, 343, u64)                                 \
_(informationElementSemantics, 344, u8)                                 \
_(informationElementUnits, 345, u16)                                    \
_(privateEnterpriseNumber, 346, u32)                                    \
_(virtualStationInterfaceId, 347, octetArray)                           \
_(virtualStationInterfaceName, 348, string)                             \
_(virtualStationUUID, 349, octetArray)                                  \
_(virtualStationName, 350, string)                                      \
_(layer2SegmentId, 351, u64)                                            \
_(layer2OctetDeltaCount, 352, u64)                                      \
_(layer2OctetTotalCount, 353, u64)                                      \
_(ingressUnicastPacketTotalCount, 354, u64)                             \
_(ingressMulticastPacketTotalCount, 355, u64)                           \
_(ingressBroadcastPacketTotalCount, 356, u64)                           \
_(egressUnicastPacketTotalCount, 357, u64)                              \
_(egressBroadcastPacketTotalCount, 358, u64)                            \
_(monitoringIntervalStartMilliSeconds, 359, dateTimeMilliseconds)       \
_(monitoringIntervalEndMilliSeconds, 360, dateTimeMilliseconds)         \
_(portRangeStart, 361, u16)                                             \
_(portRangeEnd, 362, u16)                                               \
_(portRangeStepSize, 363, u16)                                          \
_(portRangeNumPorts, 364, u16)                                          \
_(staMacAddress, 365, macAddress)                                       \
_(staIPv4Address, 366, ip4_address_t)                                   \
_(wtpMacAddress, 367, macAddress )                                      \
_(ingressInterfaceType, 368, u32)                                       \
_(egressInterfaceType, 369, u32)                                        \
_(rtpSequenceNumber, 370, u16)                                          \
_(userName, 371, string)                                                \
_(applicationCategoryName, 372, string)                                 \
_(applicationSubCategoryName, 373, string)                              \
_(applicationGroupName, 374, string)                                    \
_(originalFlowsPresent, 375, u64)                                       \
_(originalFlowsInitiated, 376, u64)                                     \
_(originalFlowsCompleted, 377, u64)                                     \
_(distinctCountOfSourceIPAddress, 378, u64)                             \
_(distinctCountOfDestinationIPAddress, 379, u64)                        \
_(distinctCountOfSourceIPv4Address, 380, u32)                           \
_(distinctCountOfDestinationIPv4Address, 381, u32)                      \
_(distinctCountOfSourceIPv6Address, 382, u64)                           \
_(distinctCountOfDestinationIPv6Address, 383, u64)                      \
_(valueDistributionMethod, 384, u8)                                     \
_(rfc3550JitterMilliseconds, 385, u32)                                  \
_(rfc3550JitterMicroseconds, 386, u32)                                  \
_(rfc3550JitterNanoseconds, 387, u32)                                   \
_(dot1qDEI, 388, boolean)                                               \
_(dot1qCustomerDEI, 389, boolean)                                       \
_(flowSelectorAlgorithm, 390, u16)                                      \
_(flowSelectedOctetDeltaCount, 391, u64)                                \
_(flowSelectedPacketDeltaCount, 392, u64)                               \
_(flowSelectedFlowDeltaCount, 393, u64)                                 \
_(selectorIDTotalFlowsObserved, 394, u64)                               \
_(selectorIDTotalFlowsSelected, 395, u64)                               \
_(samplingFlowInterval, 396, u64)                                       \
_(samplingFlowSpacing, 397, u64)                                        \
_(flowSamplingTimeInterval, 398, u64)                                   \
_(flowSamplingTimeSpacing, 399, u64)                                    \
_(hashFlowDomain, 400, u16)                                             \
_(transportOctetDeltaCount, 401, u64)                                   \
_(transportPacketDeltaCount, 402, u64)                                  \
_(originalExporterIPv4Address, 403, ip4_address_t)                      \
_(originalExporterIPv6Address, 404, ip6_address_t)                      \
_(originalObservationDomainId, 405, u32)                                \
_(intermediateProcessId, 406, u32)                                      \
_(ignoredDataRecordTotalCount, 407, u64)                                \
_(dataLinkFrameType, 408, u16)                                          \
_(sectionOffset, 409, u16)                                              \
_(sectionExportedOctets, 410, u16)                                      \
_(dot1qServiceInstanceTag, 411, octetArray)                             \
_(dot1qServiceInstanceId, 412, u32)                                     \
_(dot1qServiceInstancePriority, 413, u8)                                \
_(dot1qCustomerSourceMacAddress, 414, macAddress)                       \
_(dot1qCustomerDestinationMacAddress, 415, macAddress)                  \
_(postLayer2OctetDeltaCount, 417, u64)                                  \
_(postMCastLayer2OctetDeltaCount, 418, u64)                             \
_(postLayer2OctetTotalCount, 420, u64)                                  \
_(postMCastLayer2OctetTotalCount, 421, u64)                             \
_(minimumLayer2TotalLength, 422, u64)                                   \
_(maximumLayer2TotalLength, 423, u64)                                   \
_(droppedLayer2OctetDeltaCount, 424, u64)                               \
_(droppedLayer2OctetTotalCount, 425, u64)                               \
_(ignoredLayer2OctetTotalCount, 426, u64)                               \
_(notSentLayer2OctetTotalCount, 427, u64)                               \
_(layer2OctetDeltaSumOfSquares, 428, u64)                               \
_(layer2OctetTotalSumOfSquares, 429, u64)                               \
_(layer2FrameDeltaCount, 430, u64)                                      \
_(layer2FrameTotalCount, 431, u64)                                      \
_(pseudoWireDestinationIPv4Address, 432, ip4_address_t)                 \
_(ignoredLayer2FrameTotalCount, 433, u64)                               \
_(natQuotaExceededEvent, 466, u32)                                      \
_(maxSessionEntries, 471, u32)                                          \
_(maxBIBEntries, 472, u32)                                              \
_(maxEntriesPerUser, 473, u32)                                          \
_(maxFragmentsPendingReassembly, 475, u32)

typedef enum
{
#define _(n,v,t) n = v,
  foreach_ipfix_info_element_t
#undef _
} ipfix_info_element_id_t;

#endif /* __included_ipfix_info_elements_h__ */

/*
 * fd.io coding-style-patch-verification: ON
 *
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */