From fe9f1a6dedda6bab23cbb605d1cd5db6cd3e2468 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Thu, 5 Nov 2015 12:48:52 +0100 Subject: Initial commit on integrated BIRD New data types net_addr and variants (in lib/net.h) describing network addresses (prefix/pxlen). Modifications of FIB structures to handle these data types and changing everything to use these data types instead of prefix/pxlen pairs where possible. The commit is WiP, some protocols are not yet updated (BGP, Kernel), and the code contains some temporary scaffolding. Comments are welcome. --- proto/radv/radv.c | 7 ++----- proto/radv/radv.h | 3 +-- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'proto/radv') diff --git a/proto/radv/radv.c b/proto/radv/radv.c index 6370e006..2de89991 100644 --- a/proto/radv/radv.c +++ b/proto/radv/radv.c @@ -258,9 +258,7 @@ radv_ifa_notify(struct proto *p, unsigned flags, struct ifa *a) static inline int radv_net_match_trigger(struct radv_config *cf, net *n) { - return cf->trigger_valid && - (n->n.pxlen == cf->trigger_pxlen) && - ipa_equal(n->n.prefix, cf->trigger_prefix); + return cf->trigger_valid && net_equal(n->n.addr, cf->trigger); } int @@ -306,8 +304,7 @@ radv_check_active(struct proto_radv *ra) if (! cf->trigger_valid) return 1; - return rt_examine(ra->p.table, cf->trigger_prefix, cf->trigger_pxlen, - &(ra->p), ra->p.cf->out_filter); + return rt_examine(ra->p.table, cf->trigger, &ra->p, ra->p.cf->out_filter); } static struct proto * diff --git a/proto/radv/radv.h b/proto/radv/radv.h index 48ba9c1a..aede6a67 100644 --- a/proto/radv/radv.h +++ b/proto/radv/radv.h @@ -50,8 +50,7 @@ struct radv_config list rdnss_list; /* Global list of RDNSS configs (struct radv_rdnss_config) */ list dnssl_list; /* Global list of DNSSL configs (struct radv_dnssl_config) */ - ip_addr trigger_prefix; /* Prefix of a trigger route, if defined */ - u8 trigger_pxlen; /* Pxlen of a trigger route, if defined */ + net_addr *trigger; /* Prefix of a trigger route, if defined */ u8 trigger_valid; /* Whether a trigger route is defined */ }; -- cgit v1.2.3