]> git.proxmox.com Git - mirror_frr.git/blob - bgpd/rfapi/rfapi_backend.h
Merge branch stable/2.0 into stable/3.0
[mirror_frr.git] / bgpd / rfapi / rfapi_backend.h
1 /*
2 *
3 * Copyright 2009-2016, LabN Consulting, L.L.C.
4 *
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 *
20 */
21
22 #ifndef _QUAGGA_BGP_RFAPI_BACKEND_H
23 #define _QUAGGA_BGP_RFAPI_BACKEND_H
24
25 #if ENABLE_BGP_VNC
26
27 #include "bgpd/bgp_route.h"
28 #include "bgpd/bgp_nexthop.h"
29
30 extern void rfapi_init (void);
31 extern void vnc_zebra_init (struct thread_master *master);
32 extern void vnc_zebra_destroy (void);
33
34 extern void rfapi_delete (struct bgp *);
35
36 struct rfapi *bgp_rfapi_new (struct bgp *bgp);
37 void bgp_rfapi_destroy (struct bgp *bgp, struct rfapi *h);
38
39 extern void
40 rfapiProcessUpdate (struct peer *peer,
41 void *rfd,
42 struct prefix *p,
43 struct prefix_rd *prd,
44 struct attr *attr,
45 afi_t afi,
46 safi_t safi,
47 u_char type, u_char sub_type, uint32_t * label);
48
49
50 extern void
51 rfapiProcessWithdraw (struct peer *peer,
52 void *rfd,
53 struct prefix *p,
54 struct prefix_rd *prd,
55 struct attr *attr,
56 afi_t afi, safi_t safi, u_char type, int kill);
57
58 extern void rfapiProcessPeerDown (struct peer *peer);
59
60 extern void
61 vnc_zebra_announce (struct prefix *p,
62 struct bgp_info *new_select, struct bgp *bgp);
63
64 extern void
65 vnc_zebra_withdraw (struct prefix *p, struct bgp_info *old_select);
66
67
68 extern void
69 rfapi_vty_out_vncinfo (struct vty *vty,
70 struct prefix *p, struct bgp_info *bi, safi_t safi);
71
72
73 extern void vnc_direct_bgp_vpn_enable (struct bgp *bgp, afi_t afi);
74
75 extern void vnc_direct_bgp_vpn_disable (struct bgp *bgp, afi_t afi);
76
77 extern void vnc_direct_bgp_rh_vpn_enable (struct bgp *bgp, afi_t afi);
78
79 extern void vnc_direct_bgp_rh_vpn_disable (struct bgp *bgp, afi_t afi);
80
81 #endif /* ENABLE_BGP_VNC */
82
83 #endif /* _QUAGGA_BGP_RFAPI_BACKEND_H */