summaryrefslogtreecommitdiffstats
path: root/src/plugins/linux-cp/lcp.h
diff options
context:
space:
mode:
authorPim van Pelt <pim@ipng.nl>2023-10-06 11:26:33 +0200
committerMatthew Smith <mgsmith@netgate.com>2024-01-10 14:49:25 +0000
commit2c9b128e1b3732f9dd62699922480f9206a02b2d (patch)
treec298875846843f34828269346adaa02f160e3e15 /src/plugins/linux-cp/lcp.h
parent2fa69effc844d7a27d46c0f163c0840df961eb2d (diff)
linux-cp: Fix looping netlink messages
Signal when consuming a batch of netlink messages, in order to inhibit lcp_sync from generating new netlink messages. This avoids link up/down state changess from triggering an infinite loop. Do this in the regular case of nl_route_process_msgs() and in the special case of re-synchronizing in lcp_nl_recv_dump_replies(). Type: fix Change-Id: I419d3f9aa350c119b3778b644c65165cb4cc1bef Signed-off-by: Pim van Pelt <pim@ipng.nl>
Diffstat (limited to 'src/plugins/linux-cp/lcp.h')
-rw-r--r--src/plugins/linux-cp/lcp.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/plugins/linux-cp/lcp.h b/src/plugins/linux-cp/lcp.h
index 4ddaa3898d6..3b6b4ec00d4 100644
--- a/src/plugins/linux-cp/lcp.h
+++ b/src/plugins/linux-cp/lcp.h
@@ -29,6 +29,8 @@ typedef struct lcp_main_s
u8 del_static_on_link_down; /* Delete static routes when link goes down */
u8 del_dynamic_on_link_down; /* Delete dynamic routes when link goes down */
u8 test_mode; /* Set when Unit testing */
+ u8 netlink_processing_active; /* Set while a batch of Netlink messages are
+ being processed */
} lcp_main_t;
extern lcp_main_t lcp_main;
@@ -52,6 +54,13 @@ u8 lcp_get_del_static_on_link_down (void);
void lcp_set_del_dynamic_on_link_down (u8 is_del);
u8 lcp_get_del_dynamic_on_link_down (void);
+/**
+ * Get/Set when we're processing a batch of netlink messages.
+ * This is used to avoid looping messages between lcp-sync and netlink.
+ */
+void lcp_set_netlink_processing_active (u8 is_processing);
+u8 lcp_get_netlink_processing_active (void);
+
#endif
/*