#include "zebra/zebra_trace.h"
extern struct zebra_privs_t zserv_privs;
-uint8_t frr_protodown_r_bit = FRR_PROTODOWN_REASON_DEFAULT_BIT;
/* Note: on netlink systems, there should be a 1-to-1 mapping between interface
names and ifindex values. */
static bool is_if_protodown_reason_only_frr(uint32_t rc_bitfield)
{
- /* This shouldn't be possible */
- assert(frr_protodown_r_bit < 32);
- return (rc_bitfield == (((uint32_t)1) << frr_protodown_r_bit));
+ return (rc_bitfield == (((uint32_t)1) << if_netlink_get_frr_protodown_r_bit()));
}
/*
return -1;
nl_attr_put32(&req->n, buflen, IFLA_PROTO_DOWN_REASON_MASK,
- (1 << frr_protodown_r_bit));
+ (1 << if_netlink_get_frr_protodown_r_bit()));
nl_attr_put32(&req->n, buflen, IFLA_PROTO_DOWN_REASON_VALUE,
- ((int)pd_reason_val) << frr_protodown_r_bit);
+ ((int)pd_reason_val)
+ << if_netlink_get_frr_protodown_r_bit());
nl_attr_nest_end(&req->n, nest_protodown_reason);
interface_addr_lookup_netlink(zns);
}
-void if_netlink_set_frr_protodown_r_bit(uint8_t bit)
-{
- if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug(
- "Protodown reason bit index changed: bit-index %u -> bit-index %u",
- frr_protodown_r_bit, bit);
-
- frr_protodown_r_bit = bit;
-}
-
-void if_netlink_unset_frr_protodown_r_bit(void)
-{
- if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug(
- "Protodown reason bit index changed: bit-index %u -> bit-index %u",
- frr_protodown_r_bit, FRR_PROTODOWN_REASON_DEFAULT_BIT);
-
- frr_protodown_r_bit = FRR_PROTODOWN_REASON_DEFAULT_BIT;
-}
-
-
-bool if_netlink_frr_protodown_r_bit_is_set(void)
-{
- return (frr_protodown_r_bit != FRR_PROTODOWN_REASON_DEFAULT_BIT);
-}
-
-uint8_t if_netlink_get_frr_protodown_r_bit(void)
-{
- return frr_protodown_r_bit;
-}
-
/**
* netlink_request_tunneldump() - Request all tunnels from the linux kernel
*
extern enum netlink_msg_status
netlink_put_intf_update_msg(struct nl_batch *bth, struct zebra_dplane_ctx *ctx);
-#define FRR_PROTODOWN_REASON_DEFAULT_BIT 7
-/* Protodown bit setter/getter
- *
- * Allow users to change the bit if it conflicts with another
- * on their system.
- */
-extern void if_netlink_set_frr_protodown_r_bit(uint8_t bit);
-extern void if_netlink_unset_frr_protodown_r_bit(void);
-extern bool if_netlink_frr_protodown_r_bit_is_set(void);
-extern uint8_t if_netlink_get_frr_protodown_r_bit(void);
-
#ifdef __cplusplus
}
#endif
/* Should we allow non FRR processes to delete our routes */
bool allow_delete;
+
+ uint8_t protodown_r_bit;
};
#define GRACEFUL_RESTART_TIME 60
return atomic_load_explicit(&zrouter.in_shutdown, memory_order_relaxed);
}
+#define FRR_PROTODOWN_REASON_DEFAULT_BIT 7
+/* Protodown bit setter/getter
+ *
+ * Allow users to change the bit if it conflicts with another
+ * on their system.
+ */
+static inline void if_netlink_set_frr_protodown_r_bit(uint8_t bit)
+{
+ zrouter.protodown_r_bit = bit;
+}
+
+static inline void if_netlink_unset_frr_protodown_r_bit(void)
+{
+ zrouter.protodown_r_bit = FRR_PROTODOWN_REASON_DEFAULT_BIT;
+}
+
+static inline bool if_netlink_frr_protodown_r_bit_is_set(void)
+{
+ return (zrouter.protodown_r_bit != FRR_PROTODOWN_REASON_DEFAULT_BIT);
+}
+
+static inline uint8_t if_netlink_get_frr_protodown_r_bit(void)
+{
+ return zrouter.protodown_r_bit;
+}
+
/* zebra_northbound.c */
extern const struct frr_yang_module_info frr_zebra_info;