summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_rib.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_rib.c')
-rw-r--r--zebra/zebra_rib.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index adcaf6404..357f11282 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -4704,6 +4704,21 @@ static void rib_process_dplane_results(struct event *thread)
struct dplane_ctx_list_head ctxlist;
bool shut_p = false;
+#ifdef HAVE_SCRIPTING
+ char *script_name =
+ frrscript_names_get_script_name(ZEBRA_ON_RIB_PROCESS_HOOK_CALL);
+
+ int ret = 1;
+ struct frrscript *fs = NULL;
+
+ if (script_name) {
+ fs = frrscript_new(script_name);
+ if (fs)
+ ret = frrscript_load(fs, ZEBRA_ON_RIB_PROCESS_HOOK_CALL,
+ NULL);
+ }
+#endif /* HAVE_SCRIPTING */
+
/* Dequeue a list of completed updates with one lock/unlock cycle */
do {
@@ -4737,24 +4752,7 @@ static void rib_process_dplane_results(struct event *thread)
continue;
}
-#ifdef HAVE_SCRIPTING
- char *script_name = frrscript_names_get_script_name(
- ZEBRA_ON_RIB_PROCESS_HOOK_CALL);
-
- int ret = 1;
- struct frrscript *fs;
-
- if (script_name) {
- fs = frrscript_new(script_name);
- if (fs)
- ret = frrscript_load(
- fs, ZEBRA_ON_RIB_PROCESS_HOOK_CALL,
- NULL);
- }
-#endif /* HAVE_SCRIPTING */
-
while (ctx) {
-
#ifdef HAVE_SCRIPTING
if (ret == 0)
frrscript_call(fs,
@@ -4869,6 +4867,11 @@ static void rib_process_dplane_results(struct event *thread)
}
} while (1);
+
+#ifdef HAVE_SCRIPTING
+ if (fs)
+ frrscript_delete(fs);
+#endif
}
/*