]> git.puffer.fish Git - mirror/frr.git/commit
[ospfd] Restructure opsf_if_update() and ospf_network_run()
authorJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Tue, 2 Sep 2008 18:06:31 +0000 (19:06 +0100)
committerPaul Jakma <paul@quagga.net>
Tue, 2 Sep 2008 20:38:00 +0000 (21:38 +0100)
commita49eb30a178547189147c8a35bf9e35f429abb66
tree5d660dead08f4a98498240fefb86202000210932
parent5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6
[ospfd] Restructure opsf_if_update() and ospf_network_run()

    Add an struct interface paramenter and adjust the affected
    code accordingly.

    The old code was a mess looping over all interfaces several times
    when one interface was added/changed.

    * ospfd/ospfd.h: Add struct interface parameter to ospf_if_update()
    * ospfd/ospf_zebra.c: Add ifp arg to ospf_if_update() calls.
      (ospf_interface_address_delete) delete ospf_if_update() call,
      redundant as function calls ospf_if_free() itself.
    * ospfd/ospfd.c: (ospf_network_unset) handle deconfiguration here,
      rather than ospf_if_update.
      (ospf_network_run_interface) ospf_network_run, for
      any given interface.
      (ospf_network_run) move guts to previous, and use it.
      (ospf_if_update) Adjust to take struct interface as argument, as
      all callers have a specific ifp in mind.
      Iterate over ifp's connected list and call ospf_network_run_interface
      instead of ospf_network_run, turning this path into O(nm) rather
      than O(n^2).
      Adjust all code dealing with opsf_if_update and ospf_network_run to
      pass the new struct interface * arg.

     (some minor modifications and bug-additions by Paul Jakma).

Signed-off-by: Paul Jakma <paul@quagga.net>
ospfd/ospf_zebra.c
ospfd/ospfd.c
ospfd/ospfd.h