*: require semicolon after DEFINE_QOBJ & co.

Again, see previous commits.

Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
David Lamparter 2021-02-21 06:38:13 +01:00
parent 8451921b70
commit 96244aca23
40 changed files with 100 additions and 97 deletions

View File

@ -73,7 +73,7 @@ DEFINE_MTYPE_STATIC(BMP, BMP_MIRRORQ, "BMP route mirroring buffer");
DEFINE_MTYPE_STATIC(BMP, BMP_PEER, "BMP per BGP peer data"); DEFINE_MTYPE_STATIC(BMP, BMP_PEER, "BMP per BGP peer data");
DEFINE_MTYPE_STATIC(BMP, BMP_OPEN, "BMP stored BGP OPEN message"); DEFINE_MTYPE_STATIC(BMP, BMP_OPEN, "BMP stored BGP OPEN message");
DEFINE_QOBJ_TYPE(bmp_targets) DEFINE_QOBJ_TYPE(bmp_targets);
static int bmp_bgp_cmp(const struct bmp_bgp *a, const struct bmp_bgp *b) static int bmp_bgp_cmp(const struct bmp_bgp *a, const struct bmp_bgp *b)
{ {

View File

@ -245,9 +245,9 @@ struct bmp_targets {
uint64_t cnt_accept, cnt_aclrefused; uint64_t cnt_accept, cnt_aclrefused;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(bmp_targets) DECLARE_QOBJ_TYPE(bmp_targets);
/* per struct peer * data. Lookup by peer->qobj_node.nid, created on demand, /* per struct peer * data. Lookup by peer->qobj_node.nid, created on demand,
* deleted in peer_backward hook. */ * deleted in peer_backward hook. */

View File

@ -57,8 +57,8 @@
/* /*
* Definitions and external declarations. * Definitions and external declarations.
*/ */
DEFINE_QOBJ_TYPE(bgpevpn) DEFINE_QOBJ_TYPE(bgpevpn);
DEFINE_QOBJ_TYPE(bgp_evpn_es) DEFINE_QOBJ_TYPE(bgp_evpn_es);
/* /*

View File

@ -125,9 +125,9 @@ struct bgp_evpn_es {
/* preference config for BUM-DF election. advertised via the ESR. */ /* preference config for BUM-DF election. advertised via the ESR. */
uint16_t df_pref; uint16_t df_pref;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(bgp_evpn_es) DECLARE_QOBJ_TYPE(bgp_evpn_es);
RB_HEAD(bgp_es_rb_head, bgp_evpn_es); RB_HEAD(bgp_es_rb_head, bgp_evpn_es);
RB_PROTOTYPE(bgp_es_rb_head, bgp_evpn_es, rb_node, bgp_es_rb_cmp); RB_PROTOTYPE(bgp_es_rb_head, bgp_evpn_es, rb_node, bgp_es_rb_cmp);

View File

@ -112,10 +112,10 @@ struct bgpevpn {
/* List of local ESs */ /* List of local ESs */
struct list *local_es_evi_list; struct list *local_es_evi_list;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(bgpevpn) DECLARE_QOBJ_TYPE(bgpevpn);
/* Mapping of Import RT to VNIs. /* Mapping of Import RT to VNIs.
* The Import RTs of all VNIs are maintained in a hash table with each * The Import RTs of all VNIs are maintained in a hash table with each

View File

@ -93,9 +93,9 @@
DEFINE_MTYPE_STATIC(BGPD, PEER_TX_SHUTDOWN_MSG, "Peer shutdown message (TX)"); DEFINE_MTYPE_STATIC(BGPD, PEER_TX_SHUTDOWN_MSG, "Peer shutdown message (TX)");
DEFINE_MTYPE_STATIC(BGPD, BGP_EVPN_INFO, "BGP EVPN instance information"); DEFINE_MTYPE_STATIC(BGPD, BGP_EVPN_INFO, "BGP EVPN instance information");
DEFINE_QOBJ_TYPE(bgp_master) DEFINE_QOBJ_TYPE(bgp_master);
DEFINE_QOBJ_TYPE(bgp) DEFINE_QOBJ_TYPE(bgp);
DEFINE_QOBJ_TYPE(peer) DEFINE_QOBJ_TYPE(peer);
DEFINE_HOOK(bgp_inst_delete, (struct bgp *bgp), (bgp)); DEFINE_HOOK(bgp_inst_delete, (struct bgp *bgp), (bgp));
/* BGP process wide configuration. */ /* BGP process wide configuration. */

View File

@ -175,9 +175,9 @@ struct bgp_master {
#define BM_FLAG_SEND_EXTRA_DATA_TO_ZEBRA (1 << 1) #define BM_FLAG_SEND_EXTRA_DATA_TO_ZEBRA (1 << 1)
bool terminating; /* global flag that sigint terminate seen */ bool terminating; /* global flag that sigint terminate seen */
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(bgp_master) DECLARE_QOBJ_TYPE(bgp_master);
/* BGP route-map structure. */ /* BGP route-map structure. */
struct bgp_rmap { struct bgp_rmap {
@ -710,9 +710,9 @@ struct bgp {
/* BGP route flap dampening configuration */ /* BGP route flap dampening configuration */
struct bgp_damp_config damp[AFI_MAX][SAFI_MAX]; struct bgp_damp_config damp[AFI_MAX][SAFI_MAX];
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(bgp) DECLARE_QOBJ_TYPE(bgp);
DECLARE_HOOK(bgp_inst_delete, (struct bgp *bgp), (bgp)); DECLARE_HOOK(bgp_inst_delete, (struct bgp *bgp), (bgp));
DECLARE_HOOK(bgp_inst_config_write, DECLARE_HOOK(bgp_inst_config_write,
@ -1574,9 +1574,9 @@ struct peer {
bool advmap_config_change[AFI_MAX][SAFI_MAX]; bool advmap_config_change[AFI_MAX][SAFI_MAX];
bool advmap_table_change; bool advmap_table_change;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(peer) DECLARE_QOBJ_TYPE(peer);
/* Inherit peer attribute from peer-group. */ /* Inherit peer attribute from peer-group. */
#define PEER_ATTR_INHERIT(peer, group, attr) \ #define PEER_ATTR_INHERIT(peer, group, attr) \

View File

@ -80,8 +80,8 @@ DEFINE_MTYPE(RFAPI, RFAPI_L2ADDR_OPT, "RFAPI L2 Address Option");
DEFINE_MTYPE(RFAPI, RFAPI_AP, "RFAPI Advertised Prefix"); DEFINE_MTYPE(RFAPI, RFAPI_AP, "RFAPI Advertised Prefix");
DEFINE_MTYPE(RFAPI, RFAPI_MONITOR_ETH, "RFAPI Monitor Ethernet"); DEFINE_MTYPE(RFAPI, RFAPI_MONITOR_ETH, "RFAPI Monitor Ethernet");
DEFINE_QOBJ_TYPE(rfapi_nve_group_cfg) DEFINE_QOBJ_TYPE(rfapi_nve_group_cfg);
DEFINE_QOBJ_TYPE(rfapi_l2_group_cfg) DEFINE_QOBJ_TYPE(rfapi_l2_group_cfg);
/*********************************************************************** /***********************************************************************
* RFAPI Support * RFAPI Support
***********************************************************************/ ***********************************************************************/

View File

@ -35,9 +35,9 @@ struct rfapi_l2_group_cfg {
struct ecommunity *rt_export_list; struct ecommunity *rt_export_list;
void *rfp_cfg; /* rfp owned group config */ void *rfp_cfg; /* rfp owned group config */
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(rfapi_l2_group_cfg) DECLARE_QOBJ_TYPE(rfapi_l2_group_cfg);
typedef enum { typedef enum {
RFAPI_GROUP_CFG_NVE = 1, RFAPI_GROUP_CFG_NVE = 1,
@ -108,9 +108,9 @@ struct rfapi_nve_group_cfg {
/* for VRF type groups */ /* for VRF type groups */
uint32_t label; uint32_t label;
struct rfapi_descriptor *rfd; struct rfapi_descriptor *rfd;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(rfapi_nve_group_cfg) DECLARE_QOBJ_TYPE(rfapi_nve_group_cfg);
struct rfapi_rfg_name { struct rfapi_rfg_name {
struct rfapi_nve_group_cfg *rfg; struct rfapi_nve_group_cfg *rfg;

View File

@ -126,9 +126,9 @@ struct eigrp {
/* distribute_ctx */ /* distribute_ctx */
struct distribute_ctx *distribute_ctx; struct distribute_ctx *distribute_ctx;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(eigrp) DECLARE_QOBJ_TYPE(eigrp);
struct eigrp_if_params { struct eigrp_if_params {
uint8_t passive_interface; uint8_t passive_interface;

View File

@ -58,7 +58,7 @@
#include "eigrpd/eigrp_memory.h" #include "eigrpd/eigrp_memory.h"
#include "eigrpd/eigrp_filter.h" #include "eigrpd/eigrp_filter.h"
DEFINE_QOBJ_TYPE(eigrp) DEFINE_QOBJ_TYPE(eigrp);
static struct eigrp_master eigrp_master; static struct eigrp_master eigrp_master;

View File

@ -61,7 +61,7 @@
#include "isisd/isis_nb.h" #include "isisd/isis_nb.h"
#include "isisd/isis_ldp_sync.h" #include "isisd/isis_ldp_sync.h"
DEFINE_QOBJ_TYPE(isis_circuit) DEFINE_QOBJ_TYPE(isis_circuit);
DEFINE_HOOK(isis_if_new_hook, (struct interface *ifp), (ifp)); DEFINE_HOOK(isis_if_new_hook, (struct interface *ifp), (ifp));

View File

@ -174,9 +174,9 @@ struct isis_circuit {
*/ */
struct list *snmp_adj_list; /* List in id order */ struct list *snmp_adj_list; /* List in id order */
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(isis_circuit) DECLARE_QOBJ_TYPE(isis_circuit);
void isis_circuit_init(void); void isis_circuit_init(void);
struct isis_circuit *isis_circuit_new(struct isis *isis); struct isis_circuit *isis_circuit_new(struct isis *isis);

View File

@ -81,7 +81,7 @@ unsigned long debug_sr;
unsigned long debug_ldp_sync; unsigned long debug_ldp_sync;
unsigned long debug_lfa; unsigned long debug_lfa;
DEFINE_QOBJ_TYPE(isis_area) DEFINE_QOBJ_TYPE(isis_area);
/* ISIS process wide configuration. */ /* ISIS process wide configuration. */
static struct isis_master isis_master; static struct isis_master isis_master;

View File

@ -236,9 +236,9 @@ struct isis_area {
uint64_t id_len_mismatches[2]; uint64_t id_len_mismatches[2];
uint64_t lsp_error_counter[2]; uint64_t lsp_error_counter[2];
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(isis_area) DECLARE_QOBJ_TYPE(isis_area);
DECLARE_HOOK(isis_area_overload_bit_update, (struct isis_area * area), (area)); DECLARE_HOOK(isis_area_overload_bit_update, (struct isis_area * area), (area));

View File

@ -69,13 +69,13 @@ static void merge_l2vpns(struct ldpd_conf *, struct ldpd_conf *);
static void merge_l2vpn(struct ldpd_conf *, struct l2vpn *, static void merge_l2vpn(struct ldpd_conf *, struct l2vpn *,
struct l2vpn *); struct l2vpn *);
DEFINE_QOBJ_TYPE(iface) DEFINE_QOBJ_TYPE(iface);
DEFINE_QOBJ_TYPE(tnbr) DEFINE_QOBJ_TYPE(tnbr);
DEFINE_QOBJ_TYPE(nbr_params) DEFINE_QOBJ_TYPE(nbr_params);
DEFINE_QOBJ_TYPE(l2vpn_if) DEFINE_QOBJ_TYPE(l2vpn_if);
DEFINE_QOBJ_TYPE(l2vpn_pw) DEFINE_QOBJ_TYPE(l2vpn_pw);
DEFINE_QOBJ_TYPE(l2vpn) DEFINE_QOBJ_TYPE(l2vpn);
DEFINE_QOBJ_TYPE(ldpd_conf) DEFINE_QOBJ_TYPE(ldpd_conf);
struct ldpd_global global; struct ldpd_global global;
struct ldpd_init init; struct ldpd_init init;

View File

@ -362,11 +362,11 @@ struct iface {
struct iface_af ipv4; struct iface_af ipv4;
struct iface_af ipv6; struct iface_af ipv6;
struct iface_ldp_sync ldp_sync; struct iface_ldp_sync ldp_sync;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(iface_head, iface); RB_HEAD(iface_head, iface);
RB_PROTOTYPE(iface_head, iface, entry, iface_compare); RB_PROTOTYPE(iface_head, iface, entry, iface_compare);
DECLARE_QOBJ_TYPE(iface) DECLARE_QOBJ_TYPE(iface);
/* source of targeted hellos */ /* source of targeted hellos */
struct tnbr { struct tnbr {
@ -379,11 +379,11 @@ struct tnbr {
uint16_t pw_count; uint16_t pw_count;
uint32_t rlfa_count; uint32_t rlfa_count;
uint8_t flags; uint8_t flags;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(tnbr_head, tnbr); RB_HEAD(tnbr_head, tnbr);
RB_PROTOTYPE(tnbr_head, tnbr, entry, tnbr_compare); RB_PROTOTYPE(tnbr_head, tnbr, entry, tnbr_compare);
DECLARE_QOBJ_TYPE(tnbr) DECLARE_QOBJ_TYPE(tnbr);
#define F_TNBR_CONFIGURED 0x01 #define F_TNBR_CONFIGURED 0x01
#define F_TNBR_DYNAMIC 0x02 #define F_TNBR_DYNAMIC 0x02
@ -405,11 +405,11 @@ struct nbr_params {
uint8_t md5key_len; uint8_t md5key_len;
} auth; } auth;
uint8_t flags; uint8_t flags;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(nbrp_head, nbr_params); RB_HEAD(nbrp_head, nbr_params);
RB_PROTOTYPE(nbrp_head, nbr_params, entry, nbr_params_compare); RB_PROTOTYPE(nbrp_head, nbr_params, entry, nbr_params_compare);
DECLARE_QOBJ_TYPE(nbr_params) DECLARE_QOBJ_TYPE(nbr_params);
#define F_NBRP_KEEPALIVE 0x01 #define F_NBRP_KEEPALIVE 0x01
#define F_NBRP_GTSM 0x02 #define F_NBRP_GTSM 0x02
#define F_NBRP_GTSM_HOPS 0x04 #define F_NBRP_GTSM_HOPS 0x04
@ -463,11 +463,11 @@ struct l2vpn_if {
ifindex_t ifindex; ifindex_t ifindex;
int operative; int operative;
uint8_t mac[ETH_ALEN]; uint8_t mac[ETH_ALEN];
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(l2vpn_if_head, l2vpn_if); RB_HEAD(l2vpn_if_head, l2vpn_if);
RB_PROTOTYPE(l2vpn_if_head, l2vpn_if, entry, l2vpn_if_compare); RB_PROTOTYPE(l2vpn_if_head, l2vpn_if, entry, l2vpn_if_compare);
DECLARE_QOBJ_TYPE(l2vpn_if) DECLARE_QOBJ_TYPE(l2vpn_if);
struct l2vpn_pw { struct l2vpn_pw {
RB_ENTRY(l2vpn_pw) entry; RB_ENTRY(l2vpn_pw) entry;
@ -485,11 +485,11 @@ struct l2vpn_pw {
uint32_t remote_status; uint32_t remote_status;
uint8_t flags; uint8_t flags;
uint8_t reason; uint8_t reason;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(l2vpn_pw_head, l2vpn_pw); RB_HEAD(l2vpn_pw_head, l2vpn_pw);
RB_PROTOTYPE(l2vpn_pw_head, l2vpn_pw, entry, l2vpn_pw_compare); RB_PROTOTYPE(l2vpn_pw_head, l2vpn_pw, entry, l2vpn_pw_compare);
DECLARE_QOBJ_TYPE(l2vpn_pw) DECLARE_QOBJ_TYPE(l2vpn_pw);
#define F_PW_STATUSTLV_CONF 0x01 /* status tlv configured */ #define F_PW_STATUSTLV_CONF 0x01 /* status tlv configured */
#define F_PW_STATUSTLV 0x02 /* status tlv negotiated */ #define F_PW_STATUSTLV 0x02 /* status tlv negotiated */
#define F_PW_CWORD_CONF 0x04 /* control word configured */ #define F_PW_CWORD_CONF 0x04 /* control word configured */
@ -513,11 +513,11 @@ struct l2vpn {
struct l2vpn_if_head if_tree; struct l2vpn_if_head if_tree;
struct l2vpn_pw_head pw_tree; struct l2vpn_pw_head pw_tree;
struct l2vpn_pw_head pw_inactive_tree; struct l2vpn_pw_head pw_inactive_tree;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(l2vpn_head, l2vpn); RB_HEAD(l2vpn_head, l2vpn);
RB_PROTOTYPE(l2vpn_head, l2vpn, entry, l2vpn_compare); RB_PROTOTYPE(l2vpn_head, l2vpn, entry, l2vpn_compare);
DECLARE_QOBJ_TYPE(l2vpn) DECLARE_QOBJ_TYPE(l2vpn);
#define L2VPN_TYPE_VPWS 1 #define L2VPN_TYPE_VPWS 1
#define L2VPN_TYPE_VPLS 2 #define L2VPN_TYPE_VPLS 2
@ -584,9 +584,9 @@ struct ldpd_conf {
int flags; int flags;
time_t config_change_time; time_t config_change_time;
struct ldp_entity_stats stats; struct ldp_entity_stats stats;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(ldpd_conf) DECLARE_QOBJ_TYPE(ldpd_conf);
#define F_LDPD_NO_FIB_UPDATE 0x0001 #define F_LDPD_NO_FIB_UPDATE 0x0001
#define F_LDPD_DS_CISCO_INTEROP 0x0002 #define F_LDPD_DS_CISCO_INTEROP 0x0002
#define F_LDPD_ENABLED 0x0004 #define F_LDPD_ENABLED 0x0004

View File

@ -53,7 +53,7 @@ static int if_cmp_index_func(const struct interface *ifp1,
RB_GENERATE(if_name_head, interface, name_entry, if_cmp_func); RB_GENERATE(if_name_head, interface, name_entry, if_cmp_func);
RB_GENERATE(if_index_head, interface, index_entry, if_cmp_index_func); RB_GENERATE(if_index_head, interface, index_entry, if_cmp_index_func);
DEFINE_QOBJ_TYPE(interface) DEFINE_QOBJ_TYPE(interface);
DEFINE_HOOK(if_add, (struct interface * ifp), (ifp)); DEFINE_HOOK(if_add, (struct interface * ifp), (ifp));
DEFINE_KOOH(if_del, (struct interface * ifp), (ifp)); DEFINE_KOOH(if_del, (struct interface * ifp), (ifp));

View File

@ -301,14 +301,14 @@ struct interface {
*/ */
bool configured; bool configured;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(if_name_head, interface); RB_HEAD(if_name_head, interface);
RB_PROTOTYPE(if_name_head, interface, name_entry, if_cmp_func) RB_PROTOTYPE(if_name_head, interface, name_entry, if_cmp_func)
RB_HEAD(if_index_head, interface); RB_HEAD(if_index_head, interface);
RB_PROTOTYPE(if_index_head, interface, index_entry, if_cmp_index_func) RB_PROTOTYPE(if_index_head, interface, index_entry, if_cmp_index_func)
DECLARE_QOBJ_TYPE(interface) DECLARE_QOBJ_TYPE(interface);
#define IFNAME_RB_INSERT(vrf, ifp) \ #define IFNAME_RB_INSERT(vrf, ifp) \
({ \ ({ \

View File

@ -28,8 +28,8 @@
DEFINE_MTYPE_STATIC(LIB, KEY, "Key"); DEFINE_MTYPE_STATIC(LIB, KEY, "Key");
DEFINE_MTYPE_STATIC(LIB, KEYCHAIN, "Key chain"); DEFINE_MTYPE_STATIC(LIB, KEYCHAIN, "Key chain");
DEFINE_QOBJ_TYPE(keychain) DEFINE_QOBJ_TYPE(keychain);
DEFINE_QOBJ_TYPE(key) DEFINE_QOBJ_TYPE(key);
/* Master list of key chain. */ /* Master list of key chain. */
static struct list *keychain_list; static struct list *keychain_list;

View File

@ -32,9 +32,9 @@ struct keychain {
struct list *key; struct list *key;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(keychain) DECLARE_QOBJ_TYPE(keychain);
struct key_range { struct key_range {
time_t start; time_t start;
@ -51,9 +51,9 @@ struct key {
struct key_range send; struct key_range send;
struct key_range accept; struct key_range accept;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(key) DECLARE_QOBJ_TYPE(key);
extern void keychain_init(void); extern void keychain_init(void);
extern struct keychain *keychain_lookup(const char *); extern struct keychain *keychain_lookup(const char *);

View File

@ -620,7 +620,7 @@ static void nhgc_delete(struct nexthop_group_cmd *nhgc)
XFREE(MTYPE_TMP, nhgc); XFREE(MTYPE_TMP, nhgc);
} }
DEFINE_QOBJ_TYPE(nexthop_group_cmd) DEFINE_QOBJ_TYPE(nexthop_group_cmd);
DEFUN_NOSH(nexthop_group, nexthop_group_cmd, "nexthop-group NHGNAME", DEFUN_NOSH(nexthop_group, nexthop_group_cmd, "nexthop-group NHGNAME",
"Enter into the nexthop-group submode\n" "Enter into the nexthop-group submode\n"

View File

@ -97,12 +97,12 @@ struct nexthop_group_cmd {
struct list *nhg_list; struct list *nhg_list;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(nhgc_entry_head, nexthp_group_cmd); RB_HEAD(nhgc_entry_head, nexthp_group_cmd);
RB_PROTOTYPE(nhgc_entry_head, nexthop_group_cmd, nhgc_entry, RB_PROTOTYPE(nhgc_entry_head, nexthop_group_cmd, nhgc_entry,
nexthop_group_cmd_compare) nexthop_group_cmd_compare)
DECLARE_QOBJ_TYPE(nexthop_group_cmd) DECLARE_QOBJ_TYPE(nexthop_group_cmd);
/* /*
* Initialize nexthop_groups. If you are interested in when * Initialize nexthop_groups. If you are interested in when

View File

@ -92,7 +92,7 @@ struct qobj_node {
const struct qobj_nodetype *type; const struct qobj_nodetype *type;
}; };
#define QOBJ_FIELDS struct qobj_node qobj_node; #define QOBJ_FIELDS struct qobj_node qobj_node
/* call these at the end of any _create function (QOBJ_REG) /* call these at the end of any _create function (QOBJ_REG)
* and beginning of any _destroy function (QOBJ_UNREG) */ * and beginning of any _destroy function (QOBJ_UNREG) */
@ -118,16 +118,19 @@ void *qobj_get_typed(uint64_t id, const struct qobj_nodetype *type);
/* type declarations */ /* type declarations */
#define DECLARE_QOBJ_TYPE(structname) \ #define DECLARE_QOBJ_TYPE(structname) \
extern const struct qobj_nodetype qobj_t_##structname; extern const struct qobj_nodetype qobj_t_##structname \
/* end */
#define DEFINE_QOBJ_TYPE(structname) \ #define DEFINE_QOBJ_TYPE(structname) \
const struct qobj_nodetype qobj_t_##structname = { \ const struct qobj_nodetype qobj_t_##structname = { \
.node_member_offset = \ .node_member_offset = \
(ptrdiff_t)offsetof(struct structname, qobj_node)}; (ptrdiff_t)offsetof(struct structname, qobj_node)} \
/* end */
#define DEFINE_QOBJ_TYPE_INIT(structname, ...) \ #define DEFINE_QOBJ_TYPE_INIT(structname, ...) \
const struct qobj_nodetype qobj_t_##structname = { \ const struct qobj_nodetype qobj_t_##structname = { \
.node_member_offset = \ .node_member_offset = \
(ptrdiff_t)offsetof(struct structname, qobj_node), \ (ptrdiff_t)offsetof(struct structname, qobj_node), \
__VA_ARGS__}; __VA_ARGS__} \
/* end */
/* ID dereference with typecheck. /* ID dereference with typecheck.
* will return NULL if id not found or wrong type. */ * will return NULL if id not found or wrong type. */

View File

@ -42,8 +42,8 @@ DEFINE_MTYPE(LIB, ROUTE_MAP_COMPILED, "Route map compiled");
DEFINE_MTYPE_STATIC(LIB, ROUTE_MAP_DEP, "Route map dependency"); DEFINE_MTYPE_STATIC(LIB, ROUTE_MAP_DEP, "Route map dependency");
DEFINE_MTYPE_STATIC(LIB, ROUTE_MAP_DEP_DATA, "Route map dependency data"); DEFINE_MTYPE_STATIC(LIB, ROUTE_MAP_DEP_DATA, "Route map dependency data");
DEFINE_QOBJ_TYPE(route_map_index) DEFINE_QOBJ_TYPE(route_map_index);
DEFINE_QOBJ_TYPE(route_map) DEFINE_QOBJ_TYPE(route_map);
#define IPv4_PREFIX_LIST "ip address prefix-list" #define IPv4_PREFIX_LIST "ip address prefix-list"
#define IPv6_PREFIX_LIST "ipv6 address prefix-list" #define IPv6_PREFIX_LIST "ipv6 address prefix-list"

View File

@ -190,9 +190,9 @@ struct route_map_index {
/* List of match/sets contexts. */ /* List of match/sets contexts. */
TAILQ_HEAD(, routemap_hook_context) rhclist; TAILQ_HEAD(, routemap_hook_context) rhclist;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(route_map_index) DECLARE_QOBJ_TYPE(route_map_index);
/* Route map list structure. */ /* Route map list structure. */
struct route_map { struct route_map {
@ -225,9 +225,9 @@ struct route_map {
struct route_table *ipv4_prefix_table; struct route_table *ipv4_prefix_table;
struct route_table *ipv6_prefix_table; struct route_table *ipv6_prefix_table;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(route_map) DECLARE_QOBJ_TYPE(route_map);
/* Prototypes. */ /* Prototypes. */
extern void route_map_init(void); extern void route_map_init(void);

View File

@ -45,7 +45,7 @@
DEFINE_MTYPE_STATIC(LIB, VRF, "VRF"); DEFINE_MTYPE_STATIC(LIB, VRF, "VRF");
DEFINE_MTYPE_STATIC(LIB, VRF_BITMAP, "VRF bit-map"); DEFINE_MTYPE_STATIC(LIB, VRF_BITMAP, "VRF bit-map");
DEFINE_QOBJ_TYPE(vrf) DEFINE_QOBJ_TYPE(vrf);
static __inline int vrf_id_compare(const struct vrf *, const struct vrf *); static __inline int vrf_id_compare(const struct vrf *, const struct vrf *);
static __inline int vrf_name_compare(const struct vrf *, const struct vrf *); static __inline int vrf_name_compare(const struct vrf *, const struct vrf *);

View File

@ -95,13 +95,13 @@ struct vrf {
/* Back pointer to namespace context */ /* Back pointer to namespace context */
void *ns_ctxt; void *ns_ctxt;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
RB_HEAD(vrf_id_head, vrf); RB_HEAD(vrf_id_head, vrf);
RB_PROTOTYPE(vrf_id_head, vrf, id_entry, vrf_id_compare) RB_PROTOTYPE(vrf_id_head, vrf, id_entry, vrf_id_compare)
RB_HEAD(vrf_name_head, vrf); RB_HEAD(vrf_name_head, vrf);
RB_PROTOTYPE(vrf_name_head, vrf, name_entry, vrf_name_compare) RB_PROTOTYPE(vrf_name_head, vrf, name_entry, vrf_name_compare)
DECLARE_QOBJ_TYPE(vrf) DECLARE_QOBJ_TYPE(vrf);
/* Allow VRF with netns as backend */ /* Allow VRF with netns as backend */
enum vrf_backend_type { enum vrf_backend_type {

View File

@ -46,7 +46,7 @@
#include "lib/json.h" #include "lib/json.h"
DEFINE_MTYPE_STATIC(OSPF6D, CFG_PLIST_NAME, "configured prefix list names"); DEFINE_MTYPE_STATIC(OSPF6D, CFG_PLIST_NAME, "configured prefix list names");
DEFINE_QOBJ_TYPE(ospf6_interface) DEFINE_QOBJ_TYPE(ospf6_interface);
DEFINE_HOOK(ospf6_interface_change, DEFINE_HOOK(ospf6_interface_change,
(struct ospf6_interface * oi, int state, int old_state), (struct ospf6_interface * oi, int state, int old_state),
(oi, state, old_state)); (oi, state, old_state));

View File

@ -134,9 +134,9 @@ struct ospf6_interface {
uint32_t ls_ack_out; uint32_t ls_ack_out;
uint32_t discarded; uint32_t discarded;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(ospf6_interface) DECLARE_QOBJ_TYPE(ospf6_interface);
/* interface state */ /* interface state */
#define OSPF6_INTERFACE_NONE 0 #define OSPF6_INTERFACE_NONE 0

View File

@ -53,7 +53,7 @@
#include "ospf6d.h" #include "ospf6d.h"
#include "lib/json.h" #include "lib/json.h"
DEFINE_QOBJ_TYPE(ospf6) DEFINE_QOBJ_TYPE(ospf6);
FRR_CFG_DEFAULT_BOOL(OSPF6_LOG_ADJACENCY_CHANGES, FRR_CFG_DEFAULT_BOOL(OSPF6_LOG_ADJACENCY_CHANGES,
{ .val_bool = true, .match_profile = "datacenter", }, { .val_bool = true, .match_profile = "datacenter", },

View File

@ -132,9 +132,9 @@ struct ospf6 {
*/ */
uint16_t max_multipath; uint16_t max_multipath;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(ospf6) DECLARE_QOBJ_TYPE(ospf6);
#define OSPF6_DISABLED 0x01 #define OSPF6_DISABLED 0x01
#define OSPF6_STUB_ROUTER 0x02 #define OSPF6_STUB_ROUTER 0x02

View File

@ -49,7 +49,7 @@
#include "ospfd/ospf_dump.h" #include "ospfd/ospf_dump.h"
#include "ospfd/ospf_ldp_sync.h" #include "ospfd/ospf_ldp_sync.h"
DEFINE_QOBJ_TYPE(ospf_interface) DEFINE_QOBJ_TYPE(ospf_interface);
DEFINE_HOOK(ospf_vl_add, (struct ospf_vl_data * vd), (vd)); DEFINE_HOOK(ospf_vl_add, (struct ospf_vl_data * vd), (vd));
DEFINE_HOOK(ospf_vl_delete, (struct ospf_vl_data * vd), (vd)); DEFINE_HOOK(ospf_vl_delete, (struct ospf_vl_data * vd), (vd));
DEFINE_HOOK(ospf_if_update, (struct interface * ifp), (ifp)); DEFINE_HOOK(ospf_if_update, (struct interface * ifp), (ifp));

View File

@ -252,9 +252,9 @@ struct ospf_interface {
uint32_t full_nbrs; uint32_t full_nbrs;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(ospf_interface) DECLARE_QOBJ_TYPE(ospf_interface);
/* Prototypes. */ /* Prototypes. */
extern char *ospf_if_name(struct ospf_interface *); extern char *ospf_if_name(struct ospf_interface *);

View File

@ -62,7 +62,7 @@
#include "ospfd/ospf_gr_helper.h" #include "ospfd/ospf_gr_helper.h"
DEFINE_QOBJ_TYPE(ospf) DEFINE_QOBJ_TYPE(ospf);
/* OSPF process wide configuration. */ /* OSPF process wide configuration. */
static struct ospf_master ospf_master; static struct ospf_master ospf_master;

View File

@ -386,9 +386,9 @@ struct ospf {
bool ti_lfa_enabled; bool ti_lfa_enabled;
enum protection_type ti_lfa_protection_type; enum protection_type ti_lfa_protection_type;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(ospf) DECLARE_QOBJ_TYPE(ospf);
enum ospf_ti_lfa_p_q_space_adjacency { enum ospf_ti_lfa_p_q_space_adjacency {
OSPF_TI_LFA_P_Q_SPACE_ADJACENT, OSPF_TI_LFA_P_Q_SPACE_ADJACENT,

View File

@ -51,7 +51,7 @@ RB_GENERATE(pbr_map_entry_head, pbr_map, pbr_map_entry, pbr_map_compare)
struct pbr_map_entry_head pbr_maps = RB_INITIALIZER(&pbr_maps); struct pbr_map_entry_head pbr_maps = RB_INITIALIZER(&pbr_maps);
DEFINE_QOBJ_TYPE(pbr_map_sequence) DEFINE_QOBJ_TYPE(pbr_map_sequence);
static inline int pbr_map_compare(const struct pbr_map *pbrmap1, static inline int pbr_map_compare(const struct pbr_map *pbrmap1,
const struct pbr_map *pbrmap2) const struct pbr_map *pbrmap2)

View File

@ -149,10 +149,10 @@ struct pbr_map_sequence {
#define PBR_MAP_INVALID_VRF (1 << 5) #define PBR_MAP_INVALID_VRF (1 << 5)
uint64_t reason; uint64_t reason;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(pbr_map_sequence) DECLARE_QOBJ_TYPE(pbr_map_sequence);
extern struct pbr_map_entry_head pbr_maps; extern struct pbr_map_entry_head pbr_maps;

View File

@ -37,7 +37,7 @@
DEFINE_MTYPE_STATIC(LIB, PW, "Pseudowire"); DEFINE_MTYPE_STATIC(LIB, PW, "Pseudowire");
DEFINE_QOBJ_TYPE(zebra_pw) DEFINE_QOBJ_TYPE(zebra_pw);
DEFINE_HOOK(pw_install, (struct zebra_pw * pw), (pw)); DEFINE_HOOK(pw_install, (struct zebra_pw * pw), (pw));
DEFINE_HOOK(pw_uninstall, (struct zebra_pw * pw), (pw)); DEFINE_HOOK(pw_uninstall, (struct zebra_pw * pw), (pw));

View File

@ -53,9 +53,9 @@ struct zebra_pw {
struct zserv *client; struct zserv *client;
struct rnh *rnh; struct rnh *rnh;
struct thread *install_retry_timer; struct thread *install_retry_timer;
QOBJ_FIELDS QOBJ_FIELDS;
}; };
DECLARE_QOBJ_TYPE(zebra_pw) DECLARE_QOBJ_TYPE(zebra_pw);
RB_HEAD(zebra_pw_head, zebra_pw); RB_HEAD(zebra_pw_head, zebra_pw);
RB_PROTOTYPE(zebra_pw_head, zebra_pw, pw_entry, zebra_pw_compare); RB_PROTOTYPE(zebra_pw_head, zebra_pw, pw_entry, zebra_pw_compare);