summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_encap_tlv.h
blob: 64f9a9c743e956a5e61c2976149d331426d2ccaf (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
/*
 * 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; see the file COPYING; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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 */