Applied Pavel's fix for broadcast/multicast mode.
This commit is contained in:
parent
e59e310e64
commit
53a50af504
1 changed files with 6 additions and 7 deletions
|
@ -770,20 +770,19 @@ rip_if_notify(struct proto *p, unsigned c, struct iface *iface)
|
||||||
if (c & IF_CHANGE_UP) {
|
if (c & IF_CHANGE_UP) {
|
||||||
struct iface_patt *k = iface_patt_match(&P_CF->iface_list, iface);
|
struct iface_patt *k = iface_patt_match(&P_CF->iface_list, iface);
|
||||||
struct object_lock *lock;
|
struct object_lock *lock;
|
||||||
|
struct rip_patt *PATT = (struct rip_patt *) k;
|
||||||
|
|
||||||
if (!k) return; /* We are not interested in this interface */
|
if (!k) return; /* We are not interested in this interface */
|
||||||
|
|
||||||
lock = olock_new( p->pool );
|
lock = olock_new( p->pool );
|
||||||
|
if (!(PATT->mode & IM_BROADCAST) && (iface->flags & IF_MULTICAST))
|
||||||
#ifndef IPV6
|
#ifndef IPV6
|
||||||
lock->addr = ipa_from_u32(0xe0000009); /* This is okay: we
|
lock->addr = ipa_from_u32(0xe0000009);
|
||||||
may actually use
|
|
||||||
other address, but
|
|
||||||
we do not want two
|
|
||||||
rips at one time,
|
|
||||||
anyway. */
|
|
||||||
#else
|
#else
|
||||||
ip_pton("FF02::9", &lock->addr);
|
ip_pton("FF02::9", &lock->addr);
|
||||||
#endif
|
#endif
|
||||||
|
else
|
||||||
|
lock->addr = iface->addr->brd;
|
||||||
lock->port = P_CF->port;
|
lock->port = P_CF->port;
|
||||||
lock->iface = iface;
|
lock->iface = iface;
|
||||||
lock->hook = rip_real_if_add;
|
lock->hook = rip_real_if_add;
|
||||||
|
|
Loading…
Reference in a new issue