summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_encap_tlv.h
blob: d94d544d26f31b452abf7d7ab7261c49cd9db70a (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
 * Copyright 2015, LabN Consulting, L.L.C.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 */

#ifndef _QUAGGA_BGP_ENCAP_TLV_H
#define _QUAGGA_BGP_ENCAP_TLV_H


/***********************************************************************
 *		TUNNEL TYPE-SPECIFIC TLV ENCODE
 ***********************************************************************/

extern void
bgp_encap_type_l2tpv3overip_to_tlv(
    struct bgp_encap_type_l2tpv3_over_ip	*bet,
    struct attr					*attr);

extern void
bgp_encap_type_gre_to_tlv(
    struct bgp_encap_type_gre	*bet,
    struct attr			*attr);

extern void
bgp_encap_type_ip_in_ip_to_tlv(
    struct bgp_encap_type_ip_in_ip	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_transmit_tunnel_endpoint(
    struct bgp_encap_type_transmit_tunnel_endpoint	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_ipsec_in_tunnel_mode_to_tlv(
    struct bgp_encap_type_ipsec_in_tunnel_mode	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(
    struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(
    struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_pbb_to_tlv(
    struct bgp_encap_type_pbb	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_vxlan_to_tlv(
    struct bgp_encap_type_vxlan	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_nvgre_to_tlv(
    struct bgp_encap_type_nvgre	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_mpls_to_tlv(
    struct bgp_encap_type_mpls	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_mpls_in_gre_to_tlv(
    struct bgp_encap_type_mpls_in_gre	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_vxlan_gpe_to_tlv(
    struct bgp_encap_type_vxlan_gpe	*bet,
    struct attr				*attr);

extern void
bgp_encap_type_mpls_in_udp_to_tlv(
    struct bgp_encap_type_mpls_in_udp	*bet,
    struct attr				*attr);

/***********************************************************************
 *		TUNNEL TYPE-SPECIFIC TLV DECODE
 ***********************************************************************/

extern int
tlv_to_bgp_encap_type_l2tpv3overip(
    struct bgp_attr_encap_subtlv		*stlv,	/* subtlv chain */
    struct bgp_encap_type_l2tpv3_over_ip	*bet);	/* caller-allocated */

extern int
tlv_to_bgp_encap_type_gre(
    struct bgp_attr_encap_subtlv	*stlv,	/* subtlv chain */
    struct bgp_encap_type_gre		*bet);	/* caller-allocated */

extern int
tlv_to_bgp_encap_type_ip_in_ip(
    struct bgp_attr_encap_subtlv	*stlv,	/* subtlv chain */
    struct bgp_encap_type_ip_in_ip	*bet);	/* caller-allocated */

extern int
tlv_to_bgp_encap_type_transmit_tunnel_endpoint(
    struct bgp_attr_encap_subtlv			*stlv,
    struct bgp_encap_type_transmit_tunnel_endpoint	*bet);

extern int
tlv_to_bgp_encap_type_ipsec_in_tunnel_mode(
    struct bgp_attr_encap_subtlv		*stlv,	/* subtlv chain */
    struct bgp_encap_type_ipsec_in_tunnel_mode	*bet);	/* caller-allocated */

extern int
tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode(
    struct bgp_attr_encap_subtlv					*stlv,
    struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode	*bet);

extern int
tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode(
    struct bgp_attr_encap_subtlv					*stlv,
    struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode	*bet);

extern int
tlv_to_bgp_encap_type_vxlan(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_vxlan		*bet);

extern int
tlv_to_bgp_encap_type_nvgre(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_nvgre		*bet);

extern int
tlv_to_bgp_encap_type_mpls(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_mpls		*bet);

extern int
tlv_to_bgp_encap_type_mpls(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_mpls		*bet);

extern int
tlv_to_bgp_encap_type_mpls_in_gre(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_mpls_in_gre	*bet);

extern int
tlv_to_bgp_encap_type_vxlan_gpe(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_vxlan_gpe	*bet);

extern int
tlv_to_bgp_encap_type_mpls_in_udp(
    struct bgp_attr_encap_subtlv	*stlv,
    struct bgp_encap_type_mpls_in_udp	*bet);

extern int
tlv_to_bgp_encap_type_pbb(
    struct bgp_attr_encap_subtlv	*stlv,	/* subtlv chain */
    struct bgp_encap_type_pbb		*bet);	/* caller-allocated */

#endif /* _QUAGGA_BGP_ENCAP_TLV_H */