summaryrefslogtreecommitdiff
path: root/proto/babel/babel.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto/babel/babel.h')
-rw-r--r--proto/babel/babel.h21
1 files changed, 11 insertions, 10 deletions
diff --git a/proto/babel/babel.h b/proto/babel/babel.h
index 8b6da3c8..562abac2 100644
--- a/proto/babel/babel.h
+++ b/proto/babel/babel.h
@@ -16,7 +16,7 @@
#include "nest/bird.h"
#include "nest/cli.h"
#include "nest/iface.h"
-#include "nest/route.h"
+#include "nest/rt.h"
#include "nest/protocol.h"
#include "nest/locks.h"
#include "nest/password.h"
@@ -26,10 +26,6 @@
#include "lib/string.h"
#include "lib/timer.h"
-#define EA_BABEL_METRIC EA_CODE(PROTOCOL_BABEL, 0)
-#define EA_BABEL_ROUTER_ID EA_CODE(PROTOCOL_BABEL, 1)
-#define EA_BABEL_SEQNO EA_CODE(PROTOCOL_BABEL, 2)
-
#define BABEL_MAGIC 42
#define BABEL_VERSION 2
#define BABEL_PORT 6696
@@ -48,6 +44,8 @@
#define BABEL_ROUTE_REFRESH_FACTOR(X) ((btime)(X)*5/2) /* 2.5 */
#define BABEL_SEQNO_REQUEST_RETRY 4
#define BABEL_SEQNO_REQUEST_EXPIRY (2 S_)
+#define BABEL_SEQNO_FORWARD_EXPIRY (10 S_)
+#define BABEL_SEQNO_DUP_SUPPRESS_TIME (1 S_)
#define BABEL_GARBAGE_INTERVAL (300 S_)
#define BABEL_RXCOST_WIRED 96
#define BABEL_RXCOST_WIRELESS 256
@@ -112,6 +110,7 @@ enum babel_ae_type {
BABEL_AE_IP4 = 1,
BABEL_AE_IP6 = 2,
BABEL_AE_IP6_LL = 3,
+ BABEL_AE_IP4_VIA_IP6 = 4,
BABEL_AE_MAX
};
@@ -145,8 +144,9 @@ struct babel_iface_config {
ip_addr next_hop_ip4;
ip_addr next_hop_ip6;
+ u8 ext_next_hop; /* Enable IPv4 via IPv6 */
- u8 auth_type; /* Authentication type (BABEL_AUTH_*) */
+ u8 auth_type; /* Authentication type (BABEL_AUTH_*) */
u8 auth_permissive; /* Don't drop packets failing auth check */
uint mac_num_keys; /* Number of configured HMAC keys */
uint mac_total_len; /* Total digest length for all configured keys */
@@ -225,7 +225,8 @@ struct babel_neighbor {
u16 next_hello_seqno;
uint last_hello_int;
- u32 auth_pc;
+ u32 auth_pc_unicast;
+ u32 auth_pc_multicast;
u8 auth_passed;
u8 auth_index_len;
u8 auth_index[BABEL_AUTH_INDEX_LEN];
@@ -240,7 +241,6 @@ struct babel_neighbor {
btime init_expiry;
list routes; /* Routes this neighbour has sent us (struct babel_route) */
- list requests; /* Seqno requests bound to this neighbor */
};
struct babel_source {
@@ -270,13 +270,13 @@ struct babel_route {
struct babel_seqno_request {
node n;
- node nbr_node;
u64 router_id;
u16 seqno;
+ u8 forwarded;
u8 hop_count;
u8 count;
btime expires;
- struct babel_neighbor *nbr;
+ btime dup_suppress_time;
};
struct babel_entry {
@@ -404,6 +404,7 @@ struct babel_msg_auth {
u8 challenge_seen;
u8 challenge_len;
u8 challenge[BABEL_AUTH_MAX_NONCE_LEN];
+ u8 unicast;
};
static inline int babel_sadr_enabled(struct babel_proto *p)