mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-16 11:09:41 +00:00

Ticket: CM-7309 Reviewed By: CCR-3448 Testing Done: passing route_ospf_route_thrash, the new redist test When zebra was modified to have redistributed routes follow a replace logic instead of the del-add, one case was missed. When a route is replaced with a change only to the source protocol (say from static to bgp), its possible that the new source protocol is not selected for redistribution by a client. Since we did not delete the route initially, if the add is not allowed for the new source protocol for a client, we need to send a delete of that redistributed route. This is what the patch fixes. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
72 lines
2.2 KiB
C
72 lines
2.2 KiB
C
#include <zebra.h>
|
|
#include "zebra/rib.h"
|
|
#include "zebra/zserv.h"
|
|
|
|
#include "zebra/redistribute.h"
|
|
|
|
void zebra_redistribute_add (int a, struct zserv *b, int c)
|
|
{ return; }
|
|
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA
|
|
#pragma weak zebra_redistribute_delete = zebra_redistribute_add
|
|
#pragma weak zebra_redistribute_default_add = zebra_redistribute_add
|
|
#pragma weak zebra_redistribute_default_delete = zebra_redistribute_add
|
|
#else
|
|
void zebra_redistribute_delete (int a, struct zserv *b, int c)
|
|
{ return; }
|
|
void zebra_redistribute_default_add (int a, struct zserv *b, int c)
|
|
{ return; }
|
|
void zebra_redistribute_default_delete (int a, struct zserv *b, int c)
|
|
{ return; }
|
|
#endif
|
|
|
|
void redistribute_update (struct prefix *a, struct rib *b, struct rib *c)
|
|
{ return; }
|
|
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA
|
|
#pragma weak redistribute_delete = redistribute_update
|
|
#else
|
|
void redistribute_delete (struct prefix *a, struct rib *b)
|
|
{ return; }
|
|
#endif
|
|
|
|
void zebra_interface_up_update (struct interface *a)
|
|
{ return; }
|
|
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA
|
|
#pragma weak zebra_interface_down_update = zebra_interface_up_update
|
|
#pragma weak zebra_interface_add_update = zebra_interface_up_update
|
|
#pragma weak zebra_interface_delete_update = zebra_interface_up_update
|
|
#else
|
|
void zebra_interface_down_update (struct interface *a)
|
|
{ return; }
|
|
void zebra_interface_add_update (struct interface *a)
|
|
{ return; }
|
|
void zebra_interface_delete_update (struct interface *a)
|
|
{ return; }
|
|
#endif
|
|
|
|
void zebra_interface_address_add_update (struct interface *a,
|
|
struct connected *b)
|
|
{ return; }
|
|
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA
|
|
#pragma weak zebra_interface_address_delete_update = zebra_interface_address_add_update
|
|
#else
|
|
void zebra_interface_address_delete_update (struct interface *a,
|
|
struct connected *b)
|
|
{ return; }
|
|
#endif
|
|
|
|
int zebra_import_table (afi_t afi, u_int32_t table_id, u_int32_t metric,
|
|
int add)
|
|
{ return 0; }
|
|
|
|
int zebra_add_import_table_entry (struct route_node *rn, struct rib *rib)
|
|
{ return 0; }
|
|
|
|
int zebra_del_import_table_entry (struct route_node *rn, struct rib *rib)
|
|
{ return 0; }
|
|
|
|
int is_zebra_import_table_enabled(afi_t afi, u_int32_t table_id)
|
|
{ return 0; }
|
|
|
|
int zebra_import_table_config(struct vty *vty)
|
|
{ return 0; }
|