summaryrefslogtreecommitdiff
path: root/proto/radv/radv.h
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2017-10-06 12:22:18 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2017-10-06 12:24:37 +0200
commit7c0bab3a3987b42bc699c4417c7b2e838f189158 (patch)
treefa01a99e4ebd1fdd158dedddf98caf2e89bb9b70 /proto/radv/radv.h
parent2a95e63343a94243745e5d7000bb3e0cb61a4a0f (diff)
RAdv: Change specific route options to be per-interface
And change default values of specific route options to be consistent with values of default router options.
Diffstat (limited to 'proto/radv/radv.h')
-rw-r--r--proto/radv/radv.h27
1 files changed, 14 insertions, 13 deletions
diff --git a/proto/radv/radv.h b/proto/radv/radv.h
index 3bc18249..ab081397 100644
--- a/proto/radv/radv.h
+++ b/proto/radv/radv.h
@@ -35,7 +35,6 @@
#define DEFAULT_MAX_RA_INT 600
#define DEFAULT_MIN_DELAY 3
#define DEFAULT_CURRENT_HOP_LIMIT 64
-#define DEFAULT_LINGER_TIME 300
#define DEFAULT_VALID_LIFETIME 86400
#define DEFAULT_PREFERRED_LIFETIME 14400
@@ -55,9 +54,7 @@ struct radv_config
u8 trigger_pxlen; /* Pxlen of a trigger route, if defined */
u8 trigger_valid; /* Whether a trigger route is defined */
u8 propagate_routes; /* Do we propagate more specific routes (RFC 4191)? */
- u32 route_lifetime; /* Lifetime for the RFC 4191 routes */
- u32 route_lifetime_sensitive; /* Whether route_lifetime depends on trigger */
- u32 route_linger_time; /* For how long we advertise dead routes with lifetime = 0 */
+ u32 max_linger_time; /* Maximum of interface route_linger_time */
};
struct radv_iface_config
@@ -71,8 +68,8 @@ struct radv_iface_config
u32 max_ra_int;
u32 min_delay;
- u32 linger_time; /* How long a dead prefix should still be advertised with 0
- lifetime */
+ u32 prefix_linger_time; /* How long we advertise dead prefixes with lifetime 0 */
+ u32 route_linger_time; /* How long we advertise dead routes with lifetime 0 */
u8 rdnss_local; /* Global list is not used for RDNSS */
u8 dnssl_local; /* Global list is not used for DNSSL */
@@ -84,8 +81,11 @@ struct radv_iface_config
u32 retrans_timer;
u32 current_hop_limit;
u32 default_lifetime;
+ u32 route_lifetime; /* Lifetime for the RFC 4191 routes */
u8 default_lifetime_sensitive; /* Whether default_lifetime depends on trigger */
- u8 default_preference; /* Default Router Preference (RFC 4191) */
+ u8 route_lifetime_sensitive; /* Whether route_lifetime depends on trigger */
+ u8 default_preference; /* Default Router Preference (RFC 4191) */
+ u8 route_preference; /* Specific Route Preference (RFC 4191) */
};
struct radv_prefix_config
@@ -132,10 +132,11 @@ struct radv_route
{
struct fib_node n;
u32 lifetime; /* Lifetime from an attribute */
- u8 lifetime_set; /* Is the lifetime set by an attribute? */
+ u8 lifetime_set; /* Whether lifetime is defined */
u8 preference; /* Preference of the route, RA_PREF_* */
- u8 alive;
- bird_clock_t expires; /* Time to remove when !alive */
+ u8 preference_set; /* Whether preference is defined */
+ u8 valid; /* Whethe route is valid or withdrawn */
+ bird_clock_t changed; /* Last time when the route changed */
};
struct radv_proto
@@ -154,11 +155,10 @@ struct radv_prefix /* One prefix we advertise */
node n;
ip_addr prefix;
u8 len;
- u8 alive; /* Is the prefix alive? If not, we advertise it
+ u8 valid; /* Is the prefix valid? If not, we advertise it
with 0 lifetime, so clients stop using it */
u8 mark; /* A temporary mark for processing */
- bird_clock_t expires; /* The time when we drop this prefix from
- advertising. It is valid only if !alive. */
+ bird_clock_t changed; /* Last time when the prefix changed */
struct radv_prefix_config *cf; /* The config tied to this prefix */
};
@@ -172,6 +172,7 @@ struct radv_iface
struct pool *pool; /* A pool for interface-specific things */
list prefixes; /* The prefixes we advertise (struct radv_prefix) */
bird_clock_t prune_time; /* Next time of prefix list pruning */
+ bird_clock_t valid_time; /* Cached packet is valid until first linger timeout */
timer *timer;
struct object_lock *lock;