summaryrefslogtreecommitdiff
path: root/usr.sbin/dvmrpd/rde.h
diff options
context:
space:
mode:
authorMichele Marchetto <michele@cvs.openbsd.org>2009-03-14 15:32:56 +0000
committerMichele Marchetto <michele@cvs.openbsd.org>2009-03-14 15:32:56 +0000
commita446bf9293a3d2e42177cb2f2f0a4767780e0238 (patch)
tree7be3fb3b53b020d3d37fcb0c0059f2c7c36ef9cf /usr.sbin/dvmrpd/rde.h
parent039f7b26ddf48a1fac2384a321b78d551f7b24ad (diff)
Initial support for pruning. When every single interface is removed from the
downstream list for a particular source send a prune to the upstream router. input and ok claudio@
Diffstat (limited to 'usr.sbin/dvmrpd/rde.h')
-rw-r--r--usr.sbin/dvmrpd/rde.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/usr.sbin/dvmrpd/rde.h b/usr.sbin/dvmrpd/rde.h
index 4a55e096165..84c3ffee86a 100644
--- a/usr.sbin/dvmrpd/rde.h
+++ b/usr.sbin/dvmrpd/rde.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.h,v 1.12 2009/03/07 12:47:17 michele Exp $ */
+/* $OpenBSD: rde.h,v 1.13 2009/03/14 15:32:55 michele Exp $ */
/*
* Copyright (c) 2005, 2006 Esben Norby <norby@openbsd.org>
@@ -54,6 +54,7 @@ struct rt_node {
struct mfc_node {
RB_ENTRY(mfc_node) entry;
struct event expiration_timer;
+ struct event prune_timer;
u_int8_t ttls[MAXVIFS]; /* outgoing vif(s) */
struct in_addr origin;
struct in_addr group;
@@ -86,6 +87,7 @@ void mfc_clear(void);
void mfc_dump(pid_t);
void mfc_update(struct mfc *);
void mfc_delete(struct mfc *);
+struct rt_node *mfc_find_origin(struct in_addr);
void mfc_update_source(struct rt_node *);
int mfc_check_members(struct rt_node *, struct iface *);
@@ -100,11 +102,13 @@ int rt_remove(struct rt_node *);
void rt_clear(void);
void rt_snap(u_int32_t);
void rt_dump(pid_t);
+struct rt_node *rt_match_origin(in_addr_t);
int srt_check_route(struct route_report *, int);
int src_compare(struct src_node *, struct src_node *);
void srt_expire_nbr(struct in_addr, struct iface *);
+void srt_check_downstream_ifaces(struct rt_node *, struct iface *);
RB_PROTOTYPE(src_head, src_node, entry, src_compare);