/* 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);
/* 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);
struct listnode *node, *nnode, *node2, *nnode2;
struct eigrp_neighbor *nbr;
struct eigrp_prefix_entry *pe;
- char has_tlv;
+ bool has_tlv = false;
bool ep_saved = false;
ep = eigrp_packet_new(ei->ifp->mtu, NULL);
length += eigrp_add_authTLV_MD5_to_stream(ep->s, ei);
}
- has_tlv = 0;
for (ALL_LIST_ELEMENTS(ei->eigrp->topology_changes_internalIPV4, node,
nnode, pe)) {
if (!(pe->req_action & EIGRP_FSM_NEED_QUERY))
for (ALL_LIST_ELEMENTS(ei->nbrs, node2, nnode2, nbr)) {
if (nbr->state == EIGRP_NEIGHBOR_UP) {
listnode_add(pe->rij, nbr);
- has_tlv = 1;
+ has_tlv = true;;
}
}
}