Commit 948c865f authored by Ondřej Zajíček's avatar Ondřej Zajíček

Fixes a crash in RIP during reconfigure.

parent 3cb6c83f
......@@ -27,7 +27,7 @@
* We maintain our own linked list of &rip_entry structures -- it serves
* as our small routing table. RIP never adds to this linked list upon
* packet reception; instead, it lets the core know about data from the packet
* and waits for the core to call rip_rte_notify().
* and waits for the core to call rip_rt_notify().
*
* Within rip_tx(), the list is
* walked and a packet is generated using rip_tx_prepare(). This gets
......@@ -868,24 +868,16 @@ rip_store_tmp_attrs(struct rte *rt, struct ea_list *attrs)
*/
static void
rip_rt_notify(struct proto *p, struct rtable *table UNUSED, struct network *net,
struct rte *new, struct rte *old, struct ea_list *attrs)
struct rte *new, struct rte *old UNUSED, struct ea_list *attrs)
{
CHK_MAGIC;
struct rip_entry *e;
if (old) {
struct rip_entry *e = fib_find( &P->rtable, &net->n.prefix, net->n.pxlen );
if (!e)
log( L_BUG "%s: Deleting nonexistent entry?!", p->name );
e = fib_find( &P->rtable, &net->n.prefix, net->n.pxlen );
if (e)
fib_delete( &P->rtable, e );
}
if (new) {
struct rip_entry *e;
#if 0
/* This can happen since feeding of protocols is asynchronous */
if (fib_find( &P->rtable, &net->n.prefix, net->n.pxlen ))
log( L_BUG "%s: Inserting entry which is already there?", p->name );
#endif
e = fib_get( &P->rtable, &net->n.prefix, net->n.pxlen );
e->nexthop = new->attrs->gw;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment