BGP: Zero the newly allocated bucket structure
This fixes an issue with dirty node passed to add_tail(). Thanks to Andreas Rammhold for the initial patch.
This commit is contained in:
parent
62d57b9bdf
commit
2465867712
1 changed files with 2 additions and 3 deletions
|
@ -1477,6 +1477,7 @@ bgp_get_bucket(struct bgp_channel *c, ea_list *new)
|
||||||
|
|
||||||
/* Create the bucket */
|
/* Create the bucket */
|
||||||
b = mb_alloc(c->pool, size);
|
b = mb_alloc(c->pool, size);
|
||||||
|
*b = (struct bgp_bucket) { };
|
||||||
init_list(&b->prefixes);
|
init_list(&b->prefixes);
|
||||||
b->hash = hash;
|
b->hash = hash;
|
||||||
|
|
||||||
|
@ -1601,9 +1602,7 @@ bgp_get_prefix(struct bgp_channel *c, net_addr *net, u32 path_id)
|
||||||
else
|
else
|
||||||
px = mb_alloc(c->pool, sizeof(struct bgp_prefix) + net->length);
|
px = mb_alloc(c->pool, sizeof(struct bgp_prefix) + net->length);
|
||||||
|
|
||||||
px->buck_node.next = NULL;
|
*px = (struct bgp_prefix) { };
|
||||||
px->buck_node.prev = NULL;
|
|
||||||
px->next = NULL;
|
|
||||||
px->hash = hash;
|
px->hash = hash;
|
||||||
px->path_id = path_id;
|
px->path_id = path_id;
|
||||||
net_copy(px->net, net);
|
net_copy(px->net, net);
|
||||||
|
|
Loading…
Reference in a new issue