lib: fix route-map YANG module on old gcc versions

Copy the fix made in 'lib/if.c' to 'lib/routemap_northbound.c' so we can
have a working YANG model when compiled with GCC version less than 5.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
Rafael Zalamena 2020-02-05 11:09:31 -03:00
parent 54a35ff48b
commit 7966110676

View File

@ -1224,7 +1224,32 @@ lib_route_map_entry_set_action_tag_destroy(enum nb_event event,
} }
/* clang-format off */ /* 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 = { const struct frr_yang_module_info frr_route_map_info = {
#endif
.name = "frr-route-map", .name = "frr-route-map",
.nodes = { .nodes = {
{ {