1 /* 2 * Redistribution Handler 3 * Copyright (C) 1999 Kunihiro Ishiguro 4 * 5 * This file is part of GNU Zebra. 6 * 7 * GNU Zebra is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the 9 * Free Software Foundation; either version 2, or (at your option) any 10 * later version. 11 * 12 * GNU Zebra is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; see the file COPYING; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 #ifndef _ZEBRA_REDISTRIBUTE_H 23 #define _ZEBRA_REDISTRIBUTE_H 24 25 #include "table.h" 26 #include "vty.h" 27 #include "vrf.h" 28 29 #include "zebra/zserv.h" 30 #include "zebra/rib.h" 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif 35 36 /* ZAPI command handlers */ 37 extern void zebra_redistribute_add(ZAPI_HANDLER_ARGS); 38 extern void zebra_redistribute_delete(ZAPI_HANDLER_ARGS); 39 extern void zebra_redistribute_default_add(ZAPI_HANDLER_ARGS); 40 extern void zebra_redistribute_default_delete(ZAPI_HANDLER_ARGS); 41 /* ----------------- */ 42 43 extern void redistribute_update(const struct prefix *p, 44 const struct prefix *src_p, 45 const struct route_entry *re, 46 const struct route_entry *prev_re); 47 /* 48 * During a route delete, where 'new_re' is NULL, redist a delete to all 49 * clients registered for the type of 'old_re'. 50 * During a route update, redist a delete to any clients who will not see 51 * an update when the new route is installed. There are cases when a client 52 * may have seen a redist for 'old_re', but will not see 53 * the redist for 'new_re'. 54 */ 55 void redistribute_delete(const struct prefix *p, const struct prefix *src_p, 56 const struct route_entry *old_re, 57 const struct route_entry *new_re); 58 59 extern void zebra_interface_up_update(struct interface *); 60 extern void zebra_interface_down_update(struct interface *); 61 62 extern void zebra_interface_add_update(struct interface *); 63 extern void zebra_interface_delete_update(struct interface *); 64 65 extern void zebra_interface_address_add_update(struct interface *, 66 struct connected *); 67 extern void zebra_interface_address_delete_update(struct interface *, 68 struct connected *c); 69 extern void zebra_interface_parameters_update(struct interface *); 70 extern void zebra_interface_vrf_update_del(struct interface *, 71 vrf_id_t new_vrf_id); 72 extern void zebra_interface_vrf_update_add(struct interface *, 73 vrf_id_t old_vrf_id); 74 75 extern int zebra_import_table(afi_t afi, vrf_id_t vrf_id, 76 uint32_t table_id, uint32_t distance, 77 const char *rmap_name, int add); 78 79 extern int zebra_add_import_table_entry(struct zebra_vrf *zvrf, 80 struct route_node *rn, 81 struct route_entry *re, 82 const char *rmap_name); 83 extern int zebra_del_import_table_entry(struct zebra_vrf *zvrf, 84 struct route_node *rn, 85 struct route_entry *re); 86 extern int is_zebra_import_table_enabled(afi_t, vrf_id_t vrf_id, 87 uint32_t table_id); 88 89 extern int zebra_import_table_config(struct vty *, vrf_id_t vrf_id); 90 91 extern void zebra_import_table_rm_update(const char *rmap); 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 #endif /* _ZEBRA_REDISTRIBUTE_H */ 98