diff options
| author | Russ White <russ@riw.us> | 2017-10-31 20:21:26 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-31 20:21:26 -0400 |
| commit | 58239911bf25f2000dc42d4490420c84d1950d7c (patch) | |
| tree | 8e074a7edc3074640a88453b1011f47b2dbaab2b /eigrpd/eigrp_packet.c | |
| parent | 4053d450641d1ae996efa66e62b34e7af642a1e0 (diff) | |
| parent | d4395853e8af1e21c86d4d9227e702640af58ab1 (diff) | |
Merge pull request #1382 from donaldsharp/eigrp_loop
Eigrp loop
Diffstat (limited to 'eigrpd/eigrp_packet.c')
| -rw-r--r-- | eigrpd/eigrp_packet.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/eigrpd/eigrp_packet.c b/eigrpd/eigrp_packet.c index 83ff194729..5b54f81326 100644 --- a/eigrpd/eigrp_packet.c +++ b/eigrpd/eigrp_packet.c @@ -344,8 +344,18 @@ int eigrp_write(struct thread *thread) /* Get one packet from queue. */ ep = eigrp_fifo_next(ei->obuf); - assert(ep); - assert(ep->length >= EIGRP_HEADER_LEN); + if (!ep) { + zlog_err("%s: Interface %s no packet on queue?", + __PRETTY_FUNCTION__, ei->ifp->name); + goto out; + } + if (ep->length < EIGRP_HEADER_LEN) { + zlog_err("%s: Packet just has a header?", + __PRETTY_FUNCTION__); + eigrp_header_dump((struct eigrp_header *)ep->s->data); + eigrp_packet_delete(ei); + goto out; + } if (ep->dst.s_addr == htonl(EIGRP_MULTICAST_ADDRESS)) eigrp_if_ipmulticast(eigrp, ei->address, ei->ifp->ifindex); @@ -442,6 +452,7 @@ int eigrp_write(struct thread *thread) /* Now delete packet from queue. */ eigrp_packet_delete(ei); +out: if (eigrp_fifo_next(ei->obuf) == NULL) { ei->on_write_q = 0; list_delete_node(eigrp->oi_write_q, node); |
