]> git.proxmox.com Git - mirror_frr.git/blame - babeld/babeld.h
Merge pull request #13326 from opensourcerouting/feature/rip_topotest_distribute_list
[mirror_frr.git] / babeld / babeld.h
CommitLineData
acddc0ed 1// SPDX-License-Identifier: MIT
ca10883e
DS
2/*
3Copyright (c) 2007, 2008 by Juliusz Chroboczek
4Copyright 2011 by Matthieu Boutier and Juliusz Chroboczek
ca10883e
DS
5*/
6
7#ifndef BABEL_BABELD_H
8#define BABEL_BABELD_H
9
10#include <zebra.h>
11#include "vty.h"
12
13#define INFINITY ((unsigned short)(~0))
14
15#ifndef RTPROT_BABEL
16#define RTPROT_BABEL 42
17#endif
18
19#define RTPROT_BABEL_LOCAL -2
20
21#undef MAX
22#undef MIN
23
24#define MAX(x,y) ((x)<=(y)?(y):(x))
25#define MIN(x,y) ((x)<=(y)?(x):(y))
26
ca10883e
DS
27#if defined(__GNUC__) && (__GNUC__ >= 3)
28#define ATTRIBUTE(x) __attribute__ (x)
ca10883e
DS
29#else
30#define ATTRIBUTE(x) /**/
ca10883e
DS
31#endif
32
33#if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 3)
34#define COLD __attribute__ ((cold))
35#else
36#define COLD /**/
37#endif
38
39#ifndef IF_NAMESIZE
40#include <sys/socket.h>
41#include <net/if.h>
42#endif
43
44#ifdef HAVE_VALGRIND
45#include <valgrind/memcheck.h>
46#else
47#ifndef VALGRIND_MAKE_MEM_UNDEFINED
48#define VALGRIND_MAKE_MEM_UNDEFINED(a, b) do {} while(0)
49#endif
50#ifndef VALGRIND_CHECK_MEM_IS_DEFINED
51#define VALGRIND_CHECK_MEM_IS_DEFINED(a, b) do {} while(0)
52#endif
53#endif
54
55
e763afa5 56#define BABEL_VTY_PORT 2609
ca10883e 57#define BABEL_DEFAULT_CONFIG "babeld.conf"
ca10883e
DS
58
59/* Values in milliseconds */
60#define BABEL_DEFAULT_HELLO_INTERVAL 4000
61#define BABEL_DEFAULT_UPDATE_INTERVAL 16000
62#define BABEL_DEFAULT_RESEND_DELAY 2000
aa3ba071
AMR
63#define BABEL_DEFAULT_RTT_DECAY 42
64
65/* Values in microseconds */
66#define BABEL_DEFAULT_RTT_MIN 10000
67#define BABEL_DEFAULT_RTT_MAX 120000
ca10883e
DS
68
69/* In units of seconds */
70#define BABEL_DEFAULT_SMOOTHING_HALF_LIFE 4
71
72/* In units of 1/256. */
73#define BABEL_DEFAULT_DIVERSITY_FACTOR 256
74
75#define BABEL_DEFAULT_RXCOST_WIRED 96
76#define BABEL_DEFAULT_RXCOST_WIRELESS 256
aa3ba071 77#define BABEL_DEFAULT_MAX_RTT_PENALTY 150
ca10883e
DS
78
79/* Babel structure. */
80struct babel
81{
82 /* Babel threads. */
e6685141
DS
83 struct event *t_read; /* on Babel protocol's socket */
84 struct event *t_update; /* timers */
03a38493
PG
85 /* distribute_ctx */
86 struct distribute_ctx *distribute_ctx;
ca10883e
DS
87};
88
346526cc
DS
89extern struct zebra_privs_t babeld_privs;
90
ca10883e
DS
91extern void babeld_quagga_init(void);
92extern int input_filter(const unsigned char *id,
93 const unsigned char *prefix, unsigned short plen,
94 const unsigned char *neigh, unsigned int ifindex);
95extern int output_filter(const unsigned char *id, const unsigned char *prefix,
96 unsigned short plen, unsigned int ifindex);
97extern int redistribute_filter(const unsigned char *prefix, unsigned short plen,
98 unsigned int ifindex, int proto);
99extern int resize_receive_buffer(int size);
100extern void schedule_neighbours_check(int msecs, int override);
03a38493 101extern struct babel *babel_lookup(void);
ca10883e
DS
102
103#endif /* BABEL_BABELD_H */