#include "typesafe.h"
#include "frratomic.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* pointer with lock/deleted/invalid bit in lowest bit
*
* for atomlist/atomsort, "locked" means "this pointer can't be updated, the
struct atomsort_item *atomsort_pop(struct atomsort_head *h);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_ATOMLIST_H */
#include "compiler.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* frr_default wraps information about a default that has different
* values depending on FRR version or default-set
*
/* like strcmp(), but with version ordering */
extern int frr_version_cmp(const char *aa, const char *bb);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_DEFAULTS_H */
#include "memory.h"
#include "atomlist.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* quick RCU primer:
* There's a global sequence counter. Whenever a thread does a
* rcu_read_lock(), it is marked as holding the current sequence counter.
extern void rcu_close(struct rcu_head_close *head, int fd);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRRCU_H */
#include <prefix.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
* The above AFI and SAFI definitions are for internal use. The protocol
* definitions (IANA values) as for example used in BGP protocol packets
return safi2str(safi_iana2int(safi));
}
+#ifdef __cplusplus
+}
+#endif
+
#endif
#include "lib/hook.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct vty;
extern void log_cmd_init(void);
DECLARE_HOOK(zlog_rotate, (), ())
extern void zlog_rotate(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* __LOG_VTY_H__ */
#include "compiler.h"
#include "memory.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct fbuf {
char *buf;
char *pos;
} \
/* end */
+#ifdef __cplusplus
+}
+#endif
+
#endif
#include "thread.h"
#include "stream.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct pullwr;
/* This is a "pull-driven" write event handler. Instead of having some buffer
extern void pullwr_stats(struct pullwr *pullwr, uint64_t *total_written,
size_t *pending, size_t *kernel_pending);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _WRITEPOLL_H */
#include "thread.h"
#include "sockunion.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct resolver_query {
void (*callback)(struct resolver_query *, const char *errstr, int n,
union sockunion *);
const char *, int,
union sockunion *));
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_RESOLVER_H */
#include <pthread.h>
#include "frratomic.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/*
* this locking primitive is intended to use in a 1:N setup.
*
* anything other than reading RCU items was done
*/
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _SEQLOCK_H */
#include "gitversion.h"
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifndef GIT_SUFFIX
#define GIT_SUFFIX ""
#endif
pid_t pid_output (const char *);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _ZEBRA_VERSION_H */
#include "prefix.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* bool */
extern bool yang_str2bool(const char *value);
extern struct yang_data *yang_data_new_bool(const char *xpath, bool value);
extern const char *yang_nexthop_type2str(uint32_t ntype);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */
#ifndef _QUAGGA_ASSERT_H
#define _QUAGGA_ASSERT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern void _zlog_assert_failed(const char *assertion, const char *file,
unsigned int line, const char *function)
__attribute__((noreturn));
#undef assert
#define assert(EX) zassert(EX)
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _QUAGGA_ASSERT_H */
#include "mlag.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Zebra types. Used in Zserv message header. */
typedef uint16_t zebra_size_t;
*/
extern int zclient_send_hello(struct zclient *client);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _ZEBRA_ZCLIENT_H */
#include "memory.h"
#include "hook.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern char zlog_prefix[];
extern size_t zlog_prefixsz;
extern int zlog_tmpdirfd;
extern void zlog_tls_buffer_flush(void);
extern void zlog_tls_buffer_fini(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_ZLOG_H */
#include "zlog.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* multiple file log targets can be active */
struct zlt_fd;
extern void zlog_syslog_set_prio_min(int prio_min);
extern int zlog_syslog_get_prio_min(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _FRR_ZLOG_TARGETS_H */
#include "mlag/mlag.pb-c.h"
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define ZEBRA_MLAG_BUF_LIMIT 2048
#define ZEBRA_MLAG_LEN_SIZE 4
uint32_t *msg_type);
int zebra_mlag_protobuf_decode_message(struct stream *s, uint8_t *data,
uint32_t len);
+#ifdef __cplusplus
+}
+#endif
+
#endif
#ifndef __ZEBRA_MLAG_VTY_CODE__
#define __ZEBRA_MLAG_VTY_CODE__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern int32_t zebra_mlag_test_mlag_internal(const char *none,
const char *primary,
const char *secondary);
extern void zebra_mlag_vty_init(void);
+#ifdef __cplusplus
+}
+#endif
+
#endif
#ifndef ZEBRA_ZEBRA_NB_H_
#define ZEBRA_ZEBRA_NB_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern const struct frr_yang_module_info frr_zebra_info;
/* prototypes */
lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem(
const char *xpath, const void *list_entry);
+#ifdef __cplusplus
+}
+#endif
+
#endif
#include "lib/nexthop.h"
#include "lib/nexthop_group.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* This struct is used exclusively for dataplane
* interaction via a dataplane context.
*
struct route_entry; /* Forward ref to avoid circular includes */
extern int nexthop_active_update(struct route_node *rn, struct route_entry *re);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* __ZEBRA_NHG_H__ */
#include "zebra/zebra_nhg.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Abstraction for connected trees */
struct nhg_connected {
struct nhg_connected_tree_item tree_item;
nhg_connected_tree_add_nhe(struct nhg_connected_tree_head *head,
struct nhg_hash_entry *nhe);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* __ZEBRA_NHG_PRIVATE_H__ */