diff options
author | Paul Jakma <paul@quagga.net> | 2010-01-11 15:48:22 +0000 |
---|---|---|
committer | David Lamparter <equinox@diac24.net> | 2010-02-05 01:02:21 +0100 |
commit | b0c8c48d7fa4c691ddbe07403ccc37a26258a25e (patch) | |
tree | fbb59b63b3bf37cecd5718b598d325be4c3c4251 /ospfd/ospf_packet.h | |
parent | d0f7c7eadaa8d46306609305bc610ec902c522c2 (diff) | |
download | quagga-b0c8c48d7fa4c691ddbe07403ccc37a26258a25e.tar.bz2 quagga-b0c8c48d7fa4c691ddbe07403ccc37a26258a25e.tar.xz |
ospfd: use workqueue for ospf_ase_calculate_route
* The ospf_ase_calculate_timer can take a long time to run, as it scales
O(# of AS-External LSAs), in domains with lots of external routes.
Fix this by using a work-queue for the per-LSA processing, thus splitting
it up a bit.
* ospf_ase.h: (ospf_ase_calculate_route, ospf_ase_calculate_schedule) no
need for these to be exported.
* ospf_spf.c: (ospf_spf_calculate_timer) ospf_ase_calculate_schedule is gone.
* ospfd.h: (struct ospf) add a work-queue for the AS-External route
calculation.
* ospf_ase.c: (ospf_ase_calc_completion) completion func, for when
ase-calculation is done. Also have to take care to see if the timer
needs to be rescheduled, which is the case if ospf->ase_calc is set again
but there is no timer scheduled.
(ospf_ase_calc_process) workqueue processing function, calls to the
existing ospf_ase_calculate_route.
(ospf_ase_calculate_timer) add to work-queue, instead of calling
ospf_ase_calculate_route directly.
(ospf_ase_calculate_timer_add) do the job of ospf_ase_calculate_schedule
which can be removed. Set flag so we can tell if a timer schedule comes
in while the previous timer is running.
Diffstat (limited to 'ospfd/ospf_packet.h')
0 files changed, 0 insertions, 0 deletions