summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/routemap_northbound.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/routemap_northbound.c b/lib/routemap_northbound.c
index 3173a708e..78f2a5a01 100644
--- a/lib/routemap_northbound.c
+++ b/lib/routemap_northbound.c
@@ -1224,7 +1224,32 @@ lib_route_map_entry_set_action_tag_destroy(enum nb_event event,
}
/* clang-format off */
+#if defined(__GNUC__) && ((__GNUC__ - 0) < 5) && !defined(__clang__)
+/*
+ * gcc versions before 5.x miscalculate the size for structs with variable
+ * length arrays (they just count it as size 0)
+ */
+struct frr_yang_module_info_sizen {
+ /* YANG module name. */
+ const char *name;
+
+ /* Northbound callbacks. */
+ const struct {
+ /* Data path of this YANG node. */
+ const char *xpath;
+
+ /* Callbacks implemented for this node. */
+ struct nb_callbacks cbs;
+
+ /* Priority - lower priorities are processed first. */
+ uint32_t priority;
+ } nodes[28];
+};
+
+const struct frr_yang_module_info_sizen frr_route_map_info_sizen asm("frr_route_map_info") = {
+#else
const struct frr_yang_module_info frr_route_map_info = {
+#endif
.name = "frr-route-map",
.nodes = {
{