]> git.proxmox.com Git - mirror_frr.git/blame - babeld/message.h
Merge pull request #12816 from gpnaveen/stc_rte_err_msg
[mirror_frr.git] / babeld / message.h
CommitLineData
acddc0ed 1// SPDX-License-Identifier: MIT
ca10883e
DS
2/*
3Copyright (c) 2007, 2008 by Juliusz Chroboczek
ca10883e
DS
4*/
5
6#ifndef BABEL_MESSAGE_H
7#define BABEL_MESSAGE_H
8
9#include "babel_interface.h"
10
11#define MAX_BUFFERED_UPDATES 200
12
13#define BUCKET_TOKENS_MAX 200
14#define BUCKET_TOKENS_PER_SEC 40
15
16/* A registry of assigned TLV and sub-TLV types is available at
17 http://www.pps.univ-paris-diderot.fr/~jch/software/babel/babel-tlv-registry.text
18*/
19#define MESSAGE_PAD1 0
20#define MESSAGE_PADN 1
21#define MESSAGE_ACK_REQ 2
22#define MESSAGE_ACK 3
23#define MESSAGE_HELLO 4
24#define MESSAGE_IHU 5
25#define MESSAGE_ROUTER_ID 6
26#define MESSAGE_NH 7
27#define MESSAGE_UPDATE 8
28#define MESSAGE_REQUEST 9
29#define MESSAGE_MH_REQUEST 10
30#define MESSAGE_MAX 10
31
32/* Protocol extension through sub-TLVs. */
33#define SUBTLV_PAD1 0
34#define SUBTLV_PADN 1
35#define SUBTLV_DIVERSITY 2 /* Also known as babelz. */
36#define SUBTLV_TIMESTAMP 3 /* Used to compute RTT. */
a76cf7e4 37#define SUBTLV_MANDATORY 0x80
ca10883e
DS
38
39extern unsigned short myseqno;
40
41extern int broadcast_ihu;
42extern int split_horizon;
43
44extern struct neighbour *unicast_neighbour;
45extern struct timeval unicast_flush_timeout;
46
47void parse_packet(const unsigned char *from, struct interface *ifp,
48 const unsigned char *packet, int packetlen);
49void flushbuf(struct interface *ifp);
50void flushupdates(struct interface *ifp);
51void send_ack(struct neighbour *neigh, unsigned short nonce,
52 unsigned short interval);
53void send_hello_noupdate(struct interface *ifp, unsigned interval);
54void send_hello(struct interface *ifp);
55void flush_unicast(int dofree);
56void send_update(struct interface *ifp, int urgent,
57 const unsigned char *prefix, unsigned char plen);
58void send_update_resend(struct interface *ifp,
59 const unsigned char *prefix, unsigned char plen);
60void send_wildcard_retraction(struct interface *ifp);
61void update_myseqno(void);
62void send_self_update(struct interface *ifp);
63void send_ihu(struct neighbour *neigh, struct interface *ifp);
64void send_marginal_ihu(struct interface *ifp);
65void send_request(struct interface *ifp,
66 const unsigned char *prefix, unsigned char plen);
67void send_unicast_request(struct neighbour *neigh,
68 const unsigned char *prefix, unsigned char plen);
69void send_multihop_request(struct interface *ifp,
70 const unsigned char *prefix, unsigned char plen,
71 unsigned short seqno, const unsigned char *id,
72 unsigned short hop_count);
73void
74send_unicast_multihop_request(struct neighbour *neigh,
75 const unsigned char *prefix, unsigned char plen,
76 unsigned short seqno, const unsigned char *id,
77 unsigned short hop_count);
78void send_request_resend(struct neighbour *neigh,
79 const unsigned char *prefix, unsigned char plen,
80 unsigned short seqno, unsigned char *id);
81void handle_request(struct neighbour *neigh, const unsigned char *prefix,
82 unsigned char plen, unsigned char hop_count,
83 unsigned short seqno, const unsigned char *id);
84
85#endif