diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2022-10-03 20:06:13 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2023-10-04 13:07:28 +0200 |
commit | bcff3ae79acfd938459869ac98db4f83e3d422b6 (patch) | |
tree | eabbe667de33fcf3b077421511d70ee151ba0615 /proto/l3vpn/l3vpn.h | |
parent | 9ca86ef69cc56cb75e48e6f46bfdbe1b1e3e99b6 (diff) |
L3VPN: BGP/MPLS VPNs using MPLS backbone
The L3VPN protocol implements RFC 4364 BGP/MPLS VPNs using MPLS backbone.
It works similarly to pipe. It connects IP table (one per VRF) with (global)
VPN table. Routes passed from VPN table to IP table are stripped of RD and
filtered by import targets, routes passed in the other direction are extended
with RD, MPLS labels and export targets in extended communities. A separate
MPLS channel is used to announce MPLS routes for the labels.
Diffstat (limited to 'proto/l3vpn/l3vpn.h')
-rw-r--r-- | proto/l3vpn/l3vpn.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/proto/l3vpn/l3vpn.h b/proto/l3vpn/l3vpn.h new file mode 100644 index 00000000..52a9f36d --- /dev/null +++ b/proto/l3vpn/l3vpn.h @@ -0,0 +1,36 @@ +/* + * BIRD -- BGP/MPLS IP Virtual Private Networks (L3VPN) + * + * (c) 2022 Ondrej Zajicek <santiago@crfreenet.org> + * (c) 2022 CZ.NIC z.s.p.o. + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#ifndef _BIRD_L3VPN_H_ +#define _BIRD_L3VPN_H_ + +struct l3vpn_config { + struct proto_config c; + + u64 rd; + struct f_tree *import_target; + struct f_tree *export_target; +}; + +struct l3vpn_proto { + struct proto p; + struct channel *ip4_channel; + struct channel *ip6_channel; + struct channel *vpn4_channel; + struct channel *vpn6_channel; + + u64 rd; + struct f_tree *import_target; + struct f_tree *export_target; + u32 *export_target_data; + uint export_target_length; + uint import_target_one; +}; + +#endif |