summaryrefslogtreecommitdiff
path: root/zebra/zebra_pw.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_pw.c')
-rw-r--r--zebra/zebra_pw.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/zebra/zebra_pw.c b/zebra/zebra_pw.c
index 8f255ecfb0..8f0c964c18 100644
--- a/zebra/zebra_pw.c
+++ b/zebra/zebra_pw.c
@@ -125,9 +125,12 @@ void zebra_pw_change(struct zebra_pw *pw, ifindex_t ifindex, int type, int af,
pw->flags = flags;
pw->data = *data;
- if (zebra_pw_enabled(pw))
- zebra_register_rnh_pseudowire(pw->vrf_id, pw);
- else {
+ if (zebra_pw_enabled(pw)) {
+ bool nht_exists;
+ zebra_register_rnh_pseudowire(pw->vrf_id, pw, &nht_exists);
+ if (nht_exists)
+ zebra_pw_update(pw);
+ } else {
if (pw->protocol == ZEBRA_ROUTE_STATIC)
zebra_deregister_rnh_pseudowire(pw->vrf_id, pw);
zebra_pw_uninstall(pw);