]>
Commit | Line | Data |
---|---|---|
bf094f69 | 1 | /* |
d8647095 | 2 | * Zebra API message creation & consumption. |
bf094f69 QY |
3 | * Portions: |
4 | * Copyright (C) 1997-1999 Kunihiro Ishiguro | |
5 | * Copyright (C) 2015-2018 Cumulus Networks, Inc. | |
6 | * et al. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify it | |
9 | * under the terms of the GNU General Public License as published by the Free | |
10 | * Software Foundation; either version 2 of the License, or (at your option) | |
11 | * any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
14 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
16 | * more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License along | |
19 | * with this program; see the file COPYING; if not, write to the Free Software | |
20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
21 | */ | |
22 | ||
23 | #include "lib/if.h" | |
24 | #include "lib/vrf.h" | |
25 | #include "lib/zclient.h" | |
26 | #include "lib/pbr.h" | |
27 | ||
28 | #include "zebra/rib.h" | |
29 | #include "zebra/zserv.h" | |
30 | #include "zebra/zebra_pbr.h" | |
43e52561 | 31 | #include "zebra/zebra_errors.h" |
e11d7c96 EDP |
32 | #include "zebra/label_manager.h" |
33 | ||
bf094f69 | 34 | |
51e94aa7 EDP |
35 | #ifdef __cplusplus |
36 | extern "C" { | |
37 | #endif | |
38 | ||
bf094f69 QY |
39 | /* |
40 | * This is called to process inbound ZAPI messages. | |
41 | * | |
42 | * client | |
43 | * the client datastructure | |
44 | * | |
79b3664a MS |
45 | * fifo |
46 | * a batch of messages | |
bf094f69 | 47 | */ |
79b3664a MS |
48 | extern void zserv_handle_commands(struct zserv *client, |
49 | struct stream_fifo *fifo); | |
bf094f69 | 50 | |
8b1766b1 QY |
51 | extern int zsend_vrf_add(struct zserv *zclient, struct zebra_vrf *zvrf); |
52 | extern int zsend_vrf_delete(struct zserv *zclient, struct zebra_vrf *zvrf); | |
53 | extern int zsend_interface_add(struct zserv *zclient, struct interface *ifp); | |
54 | extern int zsend_interface_delete(struct zserv *zclient, struct interface *ifp); | |
55 | extern int zsend_interface_addresses(struct zserv *zclient, | |
56 | struct interface *ifp); | |
57 | extern int zsend_interface_address(int cmd, struct zserv *zclient, | |
58 | struct interface *ifp, | |
59 | struct connected *ifc); | |
60 | extern void nbr_connected_add_ipv6(struct interface *ifp, | |
61 | struct in6_addr *address); | |
62 | extern void nbr_connected_delete_ipv6(struct interface *ifp, | |
63 | struct in6_addr *address); | |
64 | extern int zsend_interface_update(int cmd, struct zserv *client, | |
65 | struct interface *ifp); | |
66 | extern int zsend_redistribute_route(int cmd, struct zserv *zclient, | |
86391e56 MS |
67 | const struct prefix *p, |
68 | const struct prefix *src_p, | |
40f321c0 MS |
69 | const struct route_entry *re); |
70 | ||
98a3fb0a SM |
71 | extern int zsend_router_id_update(struct zserv *zclient, afi_t afi, |
72 | struct prefix *p, vrf_id_t vrf_id); | |
8b1766b1 QY |
73 | extern int zsend_interface_vrf_update(struct zserv *zclient, |
74 | struct interface *ifp, vrf_id_t vrf_id); | |
75 | extern int zsend_interface_link_params(struct zserv *zclient, | |
76 | struct interface *ifp); | |
77 | extern int zsend_pw_update(struct zserv *client, struct zebra_pw *pw); | |
86391e56 MS |
78 | extern int zsend_route_notify_owner(struct route_entry *re, |
79 | const struct prefix *p, | |
bf094f69 | 80 | enum zapi_route_notify_owner note); |
25779064 | 81 | extern int zsend_route_notify_owner_ctx(const struct zebra_dplane_ctx *ctx, |
7cdb1a84 | 82 | enum zapi_route_notify_owner note); |
bf094f69 | 83 | |
f62e5480 | 84 | extern void zsend_rule_notify_owner(const struct zebra_dplane_ctx *ctx, |
bf094f69 QY |
85 | enum zapi_rule_notify_owner note); |
86 | extern void zsend_ipset_notify_owner(struct zebra_pbr_ipset *ipset, | |
87 | enum zapi_ipset_notify_owner note); | |
88 | extern void | |
89 | zsend_ipset_entry_notify_owner(struct zebra_pbr_ipset_entry *ipset, | |
90 | enum zapi_ipset_entry_notify_owner note); | |
91 | extern void zsend_iptable_notify_owner(struct zebra_pbr_iptable *iptable, | |
92 | enum zapi_iptable_notify_owner note); | |
8b1766b1 QY |
93 | extern void zserv_nexthop_num_warn(const char *caller, const struct prefix *p, |
94 | const unsigned int nexthop_num); | |
b120fe3b DS |
95 | |
96 | extern void zsend_capabilities_all_clients(void); | |
e11d7c96 | 97 | extern int zsend_assign_label_chunk_response(struct zserv *client, |
4cebdb9b | 98 | vrf_id_t vrf_id, |
e11d7c96 EDP |
99 | struct label_manager_chunk *lmc); |
100 | extern int zsend_label_manager_connect_response(struct zserv *client, | |
101 | vrf_id_t vrf_id, | |
102 | unsigned short result); | |
31f937fb SM |
103 | extern int zsend_sr_policy_notify_status(uint32_t color, |
104 | struct ipaddr *endpoint, char *name, | |
105 | int status); | |
51e94aa7 EDP |
106 | |
107 | #ifdef __cplusplus | |
108 | } | |
109 | #endif |