diff --git a/proto/rip/rip.c b/proto/rip/rip.c index 68d29497..82c7d9ae 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -362,6 +362,9 @@ rip_timer(timer *t) WALK_LIST( rif, P->interfaces ) { struct iface *iface = rif->iface; + if (rif->patt->mode == IM_QUIET) + continue; + if (!iface) continue; if (!(iface->flags & IF_UP)) continue; if (iface->flags & (IF_IGNORE | IF_LOOPBACK)) continue; @@ -507,7 +510,7 @@ rip_if_notify(struct proto *p, unsigned c, struct iface *old, struct iface *new) if (!k) return; /* We are not interested in this interface */ DBG("adding interface %s\n", new->name ); rif = new_iface(p, new, new->flags); - rif->metric = k->u.rip.metric; + rif->patt = k; add_head( &P->interfaces, NODE rif ); } } diff --git a/proto/rip/rip.h b/proto/rip/rip.h index 0fcda20d..4839016d 100644 --- a/proto/rip/rip.h +++ b/proto/rip/rip.h @@ -65,7 +65,7 @@ struct rip_interface { struct iface *iface; sock *sock; struct rip_connection *busy; - + struct rip_patt *patt; int metric; /* User configurable data */ int mode;