summaryrefslogtreecommitdiff
path: root/pbrd/pbr_zebra.c
diff options
context:
space:
mode:
Diffstat (limited to 'pbrd/pbr_zebra.c')
-rw-r--r--pbrd/pbr_zebra.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/pbrd/pbr_zebra.c b/pbrd/pbr_zebra.c
index c2d93a405e..de2a99e269 100644
--- a/pbrd/pbr_zebra.c
+++ b/pbrd/pbr_zebra.c
@@ -548,7 +548,7 @@ static void pbr_encode_pbr_map_sequence(struct stream *s,
}
void pbr_send_pbr_map(struct pbr_map_sequence *pbrms,
- struct pbr_map_interface *pmi, bool install)
+ struct pbr_map_interface *pmi, bool install, bool changed)
{
struct pbr_map *pbrm = pbrms->parent;
struct stream *s;
@@ -560,11 +560,13 @@ void pbr_send_pbr_map(struct pbr_map_sequence *pbrms,
pbrm->name, install, is_installed);
/*
- * If we are installed and asked to do so again
- * just return. If we are not installed and asked
- * and asked to delete just return;
+ * If we are installed and asked to do so again and the config
+ * has not changed, just return.
+ *
+ * If we are not installed and asked
+ * to delete just return.
*/
- if (install && is_installed)
+ if (install && is_installed && !changed)
return;
if (!install && !is_installed)
@@ -582,9 +584,9 @@ void pbr_send_pbr_map(struct pbr_map_sequence *pbrms,
*/
stream_putl(s, 1);
- DEBUGD(&pbr_dbg_zebra, "%s: \t%s %s %d %s %u", __func__,
- install ? "Installing" : "Deleting", pbrm->name, install,
- pmi->ifp->name, pmi->delete);
+ DEBUGD(&pbr_dbg_zebra, "%s: \t%s %s seq %u %d %s %u", __func__,
+ install ? "Installing" : "Deleting", pbrm->name, pbrms->seqno,
+ install, pmi->ifp->name, pmi->delete);
pbr_encode_pbr_map_sequence(s, pbrms, pmi->ifp);