diff options
author | Paul Jakma <paul@quagga.net> | 2010-01-08 17:11:15 +0000 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2010-12-08 17:11:19 +0000 |
commit | aa276fd783f5cdbeefe22bf54109fe523a465e07 (patch) | |
tree | 7427b7bdfd25a9f07c72461d56c3981db9761227 /ospfd/ospf_packet.h | |
parent | 57c5c6526df82970ca24293798d278862cf55106 (diff) |
ospfd: Prioritise hellos for sending by queueing to head of output buffer
* It's possible for the packet output buffer to be filled up with a long
series of non-Hello packets in between Hellos packets, such that the
router's neighbours don't receive the Hello packet in time, even though
the hello-timer ran at about the right time. Fix this by prioritising
Hello packets, letting them skip the queue and go ahead of any packets
already on the queue.
This problem can occur when there are lots of LSAs and slow links.
* ospf_packet.h: (ospf_hello_send_sub) not used outside of ospf_packet.c
* ospf_packet.c: (ospf_fifo_push_head) add packet to head of fifo (so its
no longer really a fifo, but hey)
(ospf_packet_add_top) add packet to top of the packet output queue.
(ospf_hello_send_sub) Put Hello's at the top of the packet output queue.
make it take in_addr_t parameter, so that this
ospf_hello_send can re-use this code too.
(ospf_hello_send) consolidate code by using ospf_hello_send_sub
(ospf_poll_send,ospf_hello_reply_timer) adjust for ospf_hello_send_sub.
Diffstat (limited to 'ospfd/ospf_packet.h')
-rw-r--r-- | ospfd/ospf_packet.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/ospfd/ospf_packet.h b/ospfd/ospf_packet.h index 7b3d6866..9a472081 100644 --- a/ospfd/ospf_packet.h +++ b/ospfd/ospf_packet.h @@ -162,6 +162,5 @@ extern int ospf_ls_upd_timer (struct thread *); extern int ospf_ls_ack_timer (struct thread *); extern int ospf_poll_timer (struct thread *); extern int ospf_hello_reply_timer (struct thread *); -extern void ospf_hello_send_sub (struct ospf_interface *, struct in_addr *); #endif /* _ZEBRA_OSPF_PACKET_H */ |