summaryrefslogtreecommitdiffstats
path: root/nest/rt-table.c
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-30 23:24:15 +0200
committerMartin Mares <mj@ucw.cz>2000-05-30 23:24:15 +0200
commit2f71123158973d770eee1dea64b46a4774bcf9a5 (patch)
tree68df5481d6a9c354b2c4029ed7ce56d4177279dd /nest/rt-table.c
parentcaab3bb374d2671982d068c0fb0aa6217691d5bd (diff)
downloadbird-2f71123158973d770eee1dea64b46a4774bcf9a5.tar
bird-2f71123158973d770eee1dea64b46a4774bcf9a5.zip
Killed bug in merging of dynamic attributes.
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r--nest/rt-table.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index da76538..6460479 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -173,11 +173,12 @@ do_rte_announce(struct announce_hook *a, net *net, rte *new, rte *old, ea_list *
p->rt_notify(p, net, NULL, old, NULL);
else if (tmpa)
{
- while (tmpa->next)
- tmpa = tmpa->next;
- tmpa->next = new->attrs->eattrs;
+ ea_list *t = tmpa;
+ while (t->next)
+ t = t->next;
+ t->next = new->attrs->eattrs;
p->rt_notify(p, net, new, old, tmpa);
- tmpa->next = NULL;
+ t->next = NULL;
}
else
p->rt_notify(p, net, new, old, new->attrs->eattrs);
@@ -763,6 +764,7 @@ rt_show_rte(struct cli *c, byte *ia, rte *e, struct rt_show_data *d, ea_list *tm
t = ea_append(t, a->eattrs);
tmpa = alloca(ea_scan(t));
ea_merge(t, tmpa);
+ ea_sort(tmpa);
}
if (a->proto->proto->get_route_info)
a->proto->proto->get_route_info(e, info, tmpa);