mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 17:51:53 +00:00
Merge commit 'd40c26594c22ad934a13061e11b373bdf81af8f9' into integrated
Conflicts: proto/static/static.c
This commit is contained in:
commit
6c58962611
@ -58,7 +58,7 @@ p_igp_table(struct proto *p)
|
||||
static void
|
||||
static_install(struct proto *p, struct static_route *r, struct iface *ifa)
|
||||
{
|
||||
if (r->installed)
|
||||
if (r->installed > 0)
|
||||
return;
|
||||
|
||||
DBG("Installing static route %I/%d, rtd=%d\n", r->net, r->masklen, r->dest);
|
||||
@ -122,7 +122,7 @@ static_remove(struct proto *p, struct static_route *r)
|
||||
if (!r->installed)
|
||||
return;
|
||||
|
||||
DBG("Removing static route %I/%d\n", r->net, r->masklen);
|
||||
DBG("Removing static route %I/%d via %I\n", r->net, r->masklen, r->via);
|
||||
|
||||
// int pxlen = r->masklen + (ipa_is_ip4(r->net) ? 96 : 0); // XXXX: Hack
|
||||
net *n = net_find(p->table, r->net, r->masklen);
|
||||
@ -419,19 +419,24 @@ static_match(struct proto *p, struct static_route *r, struct static_config *n)
|
||||
|
||||
if (r->neigh)
|
||||
r->neigh->data = NULL;
|
||||
|
||||
WALK_LIST(t, n->iface_routes)
|
||||
if (static_same_net(r, t))
|
||||
{
|
||||
t->installed = r->installed && static_same_dest(r, t);
|
||||
return;
|
||||
}
|
||||
goto found;
|
||||
|
||||
WALK_LIST(t, n->other_routes)
|
||||
if (static_same_net(r, t))
|
||||
{
|
||||
t->installed = r->installed && static_same_dest(r, t);
|
||||
return;
|
||||
}
|
||||
goto found;
|
||||
|
||||
static_remove(p, r);
|
||||
return;
|
||||
|
||||
found:
|
||||
/* If destination is different, force reinstall */
|
||||
if ((r->installed > 0) && !static_same_dest(r, t))
|
||||
t->installed = -1;
|
||||
else
|
||||
t->installed = r->installed;
|
||||
}
|
||||
|
||||
static inline rtable *
|
||||
|
@ -31,7 +31,7 @@ struct static_route {
|
||||
struct neighbor *neigh;
|
||||
byte *if_name; /* Name for RTD_DEVICE routes */
|
||||
struct static_route *mp_next; /* Nexthops for RTD_MULTIPATH routes */
|
||||
int installed; /* Installed in master table */
|
||||
int installed; /* Installed in rt table, -1 for reinstall */
|
||||
};
|
||||
|
||||
/* Dummy nodes (parts of multipath route) abuses masklen field for weight
|
||||
|
Loading…
Reference in New Issue
Block a user