summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_pw.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-02-06 00:41:12 +0100
committerGitHub <noreply@github.com>2019-02-06 00:41:12 +0100
commit4634d02cfd86685156b29c8084a979749efe15e2 (patch)
tree877368695bf3484d632785d040eab21ac2aa802e /zebra/zebra_pw.c
parentMerge pull request #3737 from qlyoung/doc-move-topotest-to-devdocs (diff)
parentzebra: add handler for pw install errors (diff)
downloadfrr-4634d02cfd86685156b29c8084a979749efe15e2.tar.xz
frr-4634d02cfd86685156b29c8084a979749efe15e2.zip
Merge pull request #3684 from mjstapp/dplane_pw
zebra: async dataplane for pseudowires
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 2d6ec4ec0..006c1da02 100644
--- a/zebra/zebra_pw.c
+++ b/zebra/zebra_pw.c
@@ -96,9 +96,10 @@ void zebra_pw_del(struct zebra_vrf *zvrf, struct zebra_pw *pw)
zebra_deregister_rnh_pseudowire(pw->vrf_id, pw);
/* uninstall */
- if (pw->status == PW_STATUS_UP)
+ if (pw->status == PW_STATUS_UP) {
hook_call(pw_uninstall, pw);
- else if (pw->install_retry_timer)
+ dplane_pw_uninstall(pw);
+ } else if (pw->install_retry_timer)
THREAD_TIMER_OFF(pw->install_retry_timer);
/* unlink and release memory */
@@ -169,7 +170,8 @@ static void zebra_pw_install(struct zebra_pw *pw)
pw->vrf_id, pw->ifname,
zebra_route_string(pw->protocol));
- if (hook_call(pw_install, pw)) {
+ hook_call(pw_install, pw);
+ if (dplane_pw_install(pw) == ZEBRA_DPLANE_REQUEST_FAILURE) {
zebra_pw_install_failure(pw);
return;
}
@@ -190,6 +192,7 @@ static void zebra_pw_uninstall(struct zebra_pw *pw)
/* ignore any possible error */
hook_call(pw_uninstall, pw);
+ dplane_pw_uninstall(pw);
if (zebra_pw_enabled(pw))
zebra_pw_update_status(pw, PW_STATUS_DOWN);