2 * Copyright 2015, LabN Consulting, L.L.C.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; see the file COPYING; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 #ifndef _QUAGGA_BGP_ENCAP_TLV_H
20 #define _QUAGGA_BGP_ENCAP_TLV_H
23 /***********************************************************************
24 * TUNNEL TYPE-SPECIFIC TLV ENCODE
25 ***********************************************************************/
28 bgp_encap_type_l2tpv3overip_to_tlv(
29 struct bgp_encap_type_l2tpv3_over_ip
*bet
,
33 bgp_encap_type_gre_to_tlv(
34 struct bgp_encap_type_gre
*bet
,
38 bgp_encap_type_ip_in_ip_to_tlv(
39 struct bgp_encap_type_ip_in_ip
*bet
,
43 bgp_encap_type_transmit_tunnel_endpoint(
44 struct bgp_encap_type_transmit_tunnel_endpoint
*bet
,
48 bgp_encap_type_ipsec_in_tunnel_mode_to_tlv(
49 struct bgp_encap_type_ipsec_in_tunnel_mode
*bet
,
53 bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(
54 struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
*bet
,
58 bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(
59 struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
*bet
,
63 bgp_encap_type_pbb_to_tlv(
64 struct bgp_encap_type_pbb
*bet
,
68 bgp_encap_type_vxlan_to_tlv(
69 struct bgp_encap_type_vxlan
*bet
,
73 bgp_encap_type_nvgre_to_tlv(
74 struct bgp_encap_type_nvgre
*bet
,
78 bgp_encap_type_mpls_to_tlv(
79 struct bgp_encap_type_mpls
*bet
,
83 bgp_encap_type_mpls_in_gre_to_tlv(
84 struct bgp_encap_type_mpls_in_gre
*bet
,
88 bgp_encap_type_vxlan_gpe_to_tlv(
89 struct bgp_encap_type_vxlan_gpe
*bet
,
93 bgp_encap_type_mpls_in_udp_to_tlv(
94 struct bgp_encap_type_mpls_in_udp
*bet
,
97 /***********************************************************************
98 * TUNNEL TYPE-SPECIFIC TLV DECODE
99 ***********************************************************************/
102 tlv_to_bgp_encap_type_l2tpv3overip(
103 struct bgp_attr_encap_subtlv
*stlv
, /* subtlv chain */
104 struct bgp_encap_type_l2tpv3_over_ip
*bet
); /* caller-allocated */
107 tlv_to_bgp_encap_type_gre(
108 struct bgp_attr_encap_subtlv
*stlv
, /* subtlv chain */
109 struct bgp_encap_type_gre
*bet
); /* caller-allocated */
112 tlv_to_bgp_encap_type_ip_in_ip(
113 struct bgp_attr_encap_subtlv
*stlv
, /* subtlv chain */
114 struct bgp_encap_type_ip_in_ip
*bet
); /* caller-allocated */
117 tlv_to_bgp_encap_type_transmit_tunnel_endpoint(
118 struct bgp_attr_encap_subtlv
*stlv
,
119 struct bgp_encap_type_transmit_tunnel_endpoint
*bet
);
122 tlv_to_bgp_encap_type_ipsec_in_tunnel_mode(
123 struct bgp_attr_encap_subtlv
*stlv
, /* subtlv chain */
124 struct bgp_encap_type_ipsec_in_tunnel_mode
*bet
); /* caller-allocated */
127 tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode(
128 struct bgp_attr_encap_subtlv
*stlv
,
129 struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
*bet
);
132 tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode(
133 struct bgp_attr_encap_subtlv
*stlv
,
134 struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
*bet
);
137 tlv_to_bgp_encap_type_vxlan(
138 struct bgp_attr_encap_subtlv
*stlv
,
139 struct bgp_encap_type_vxlan
*bet
);
142 tlv_to_bgp_encap_type_nvgre(
143 struct bgp_attr_encap_subtlv
*stlv
,
144 struct bgp_encap_type_nvgre
*bet
);
147 tlv_to_bgp_encap_type_mpls(
148 struct bgp_attr_encap_subtlv
*stlv
,
149 struct bgp_encap_type_mpls
*bet
);
152 tlv_to_bgp_encap_type_mpls(
153 struct bgp_attr_encap_subtlv
*stlv
,
154 struct bgp_encap_type_mpls
*bet
);
157 tlv_to_bgp_encap_type_mpls_in_gre(
158 struct bgp_attr_encap_subtlv
*stlv
,
159 struct bgp_encap_type_mpls_in_gre
*bet
);
162 tlv_to_bgp_encap_type_vxlan_gpe(
163 struct bgp_attr_encap_subtlv
*stlv
,
164 struct bgp_encap_type_vxlan_gpe
*bet
);
167 tlv_to_bgp_encap_type_mpls_in_udp(
168 struct bgp_attr_encap_subtlv
*stlv
,
169 struct bgp_encap_type_mpls_in_udp
*bet
);
172 tlv_to_bgp_encap_type_pbb(
173 struct bgp_attr_encap_subtlv
*stlv
, /* subtlv chain */
174 struct bgp_encap_type_pbb
*bet
); /* caller-allocated */
176 #endif /* _QUAGGA_BGP_ENCAP_TLV_H */