Direct: Fixes behavior for the same routes on different interfaces
Thanks to Andrew (seti.kr.ua) for the bug report.
This commit is contained in:
parent
8d9eef1771
commit
ab4da3423d
1 changed files with 9 additions and 3 deletions
|
@ -51,7 +51,10 @@ dev_ifa_notify(struct proto *p, unsigned c, struct ifa *ad)
|
|||
DBG("dev_if_notify: device shutdown: prefix not found\n");
|
||||
return;
|
||||
}
|
||||
rte_update(p, n, NULL);
|
||||
|
||||
/* Use iface ID as local source ID */
|
||||
struct rte_src *src = rt_get_source(p, ad->iface->index);
|
||||
rte_update2(p->main_ahook, n, NULL, src);
|
||||
}
|
||||
else if (c & IF_CHANGE_UP)
|
||||
{
|
||||
|
@ -61,8 +64,11 @@ dev_ifa_notify(struct proto *p, unsigned c, struct ifa *ad)
|
|||
|
||||
DBG("dev_if_notify: %s:%I going up\n", ad->iface->name, ad->ip);
|
||||
|
||||
/* Use iface ID as local source ID */
|
||||
struct rte_src *src = rt_get_source(p, ad->iface->index);
|
||||
|
||||
rta a0 = {
|
||||
.src = p->main_source,
|
||||
.src = src,
|
||||
.source = RTS_DEVICE,
|
||||
.scope = SCOPE_UNIVERSE,
|
||||
.cast = RTC_UNICAST,
|
||||
|
@ -75,7 +81,7 @@ dev_ifa_notify(struct proto *p, unsigned c, struct ifa *ad)
|
|||
e = rte_get_temp(a);
|
||||
e->net = n;
|
||||
e->pflags = 0;
|
||||
rte_update(p, n, e);
|
||||
rte_update2(p->main_ahook, n, e, src);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue