2005-02-14 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.

2005-02-11 Hasso Tepper <hasso at quagga.net>

	* ospf_lsdb.c: Fix sum of checksums calculation.

2005-02-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the
	  error message.

2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_interface.h: Reduce structure padding by putting new u_char
	  field multicast_memberships in a better spot (grouped with
	  other u_char fields type and state).

2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_interface.h: Improve passive_interface comment.  Add new
	  multicast_memberships bitmask to struct ospf_interface to track
	  active multicast subscriptions.  Declare new function
	  ospf_if_set_multicast.
	* ospf_interface.c: (ospf_if_set_multicast) New function to configure
	  multicast memberships properly based on the current
	  multicast_memberships status and the current values of the
	  ospf_interface state, type, and passive_interface status.
	  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is
	  now handled by ism_change_state's call to ospf_if_set_multicast).
	  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now
	  handled by ism_change_state).
	* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave
	  the DRouters multicast group (now handled by ism_change_state's call
	  to ospf_if_set_multicast).
	  (ism_change_state) Add call to ospf_if_set_multicast to change
	  multicast memberships as necessary to reflect the new interface state.
	* ospf_packet.c: (ospf_hello) When a Hello packet is received on a
	  passive interface: 1. Increase the severity of the error message
	  from LOG_INFO to LOG_WARNING; 2. Add more information to the error
	  message (packet destination address and interface address);
	  and 3. If the packet was sent to ospf-all-routers, then try
	  to fix the multicast group memberships.
	  (ospf_read) When a packet is received on an interface whose state
	  is ISM_Down, enhance the warning message to show the packet
	  destination address, and try to update/fix the multicast group
	  memberships if the packet was sent to a multicast address.
	  When a packet is received for ospf-designated-routers, but the
	  current interface state is not DR or BDR, then increase the
	  severity level of the error message from LOG_INFO to LOG_WARNING,
	  and try to fix the multicast group memberships.
	* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for
	  any ospf interface that may have changed from active to passive.
	  (no_ospf_passive_interface) Call ospf_if_set_multicast for
	  any ospf interface that may have changed from passive to active.
	  (show_ip_ospf_interface_sub) Show multicast group memberships.

2005-02-08 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.

2005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,
	  not for event ISM_InterfaceDown.  And improve the message by
	  adding the interface flags.

2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_network.c: (ospf_sock_init) Save errno before calling
	  ospfd_privs.change.

2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_packet_add) If oi->obuf is NULL, print
	an error message and return.
	(ospf_read) If the interface state is ISM_InterfaceDown, issue
	a warning message and ignore the packet.

2005-01-10  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.h: Remove commented out definition of
	OSPF_MAX_PACKET; neither it or the uncommented one are used any more.

	* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication
	when deciding if an update will fit.
	(ospf_packet_authspace): Factor out calculation of size required
	for authentication.
	(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.
	Don't confuse readers that there is a macro.

2004-12-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_network.c: Improve all setsockopt error messages to give detailed
	  information on the arguments.

2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_db_desc) Reduce severity of "Negotiation done"
	  messages from LOG_WARNING to LOG_INFO, since this seems to be
	  normal.

2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_read) Always look up the interface if
	  ospf_recv_packet returns NULL ifp, since some platforms such
	  as Solaris 8 appear to support ifindex retrieval but don't.

2004-12-22 Hasso Tepper <hasso at quagga.net>

	* ospf_dump.c: Show debug configuration in vtysh.
	* ospf_vty.c: Fix "show ip ospf" output. Router can't be elected in
	  any case if it's configured as "translate-never".
	* ospf_lsdb.[ch]: New function to calculate sum of checksums.
	* ospf_vty.c: Bugfix to show really number of AS external LSAs, not
	  number of all LSAs with AS scope, this includes opaque as LSAs as
	  well, show this number separately. Show numbers and sums of
	  checksums for each type of LSAs.
	* ospf_lsa.c: Calculate checksum before putting LSA into database.

2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_interface.h: Declare new function ospf_default_iftype.
	* ospf_interface.c: (ospf_default_iftype) New function to centralize
	  this logic in one place.
	* ospf_zebra.c: (ospf_interface_add) Use new function
	  ospf_default_iftype.
	* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic
	  by using new function ospf_default_iftype.

2004-12-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_db_desc) Should be static, not global.
	  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning
	  messages to include identifying information (e.g. router id).
	* ospf_nsm.c: (nsm_change_state) Improve info message to include
	  router id and state names.

2004-12-09  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_apiserver.c (ospf_apiserver_term): Obtain struct
	ospf_apiserver * from listnode.  Remove unused variables.  Follows
	suggestion from Jay Fenlason.

2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* *.c: Change level of debug messages to LOG_DEBUG.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_main.c: (main) The 2nd argument to openzlog has been removed.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message
	  from LOG_NOTICE to LOG_DEBUG.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Issue a startup announcement using zlog_notice.

2004-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning
	  message and in comment.
	  (ospf_db_desc) Warning message that a packet is being discarded
	  should give the router id of the packet source.  Fix spelling
	  of packet in two warning messages.
	  (ospf_ls_req) Warning message that a link state request is being
	  discarded should give the router id of the neighbor that sent it.

2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_main.c: Remove #include "debug.h" (was not being used, and
	  lib/debug.h has now been deleted).

2004-11-25 Hasso Tepper <hasso at quagga.net>

	* ospf_main.c: Make group to run as configurable.

2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present
	and works (lib/zebra.h provides if OS doesn't).

2004-11-15 Paul Jakma <paul@dishone.st>

	* ospf_{apiserver,te}.c: ospf_lsa_free's should be ospf_lsa_unlock.

2004-11-12 Paul Jakma <paul@dishone.st>

	* ospf_ia.c: (process_summary_lsa) Only an ABR has any reason to
          ignore stub area summary default. Even so it seems a strange
          check, add a comment to that effect.

2004-11-04 Paul Jakma <paul@dishone.st>

	* ospfd.c: (ospf_network_match_iface) revert to previous network
          statement match behaviour.

2004-11-02 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points
	  to it. Add convenience pointer to msg->msg_iov[1], and use this,
	  fixing the unfortunate borkenness introduced in moving of this code
	  to a function.
	  (ospf_write) remove iovp and fix up call to previous.
	  (ospf_ls_upd_packet_new) cast size to long int - unfortunately
          glibc's size_t format modifier is not portable.

2004-10-31 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (ospf_write_frags) Add debug output
	  (ospf_write) set type early, so we can pass it to
	  ospf_write_frags.
	  (ospf_ls_upd_packet_new) print size in debug output when too large
	  packet is encountered.
	* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of
	  THREAD_ARG to store an integer, but it should at least use same
          same type to retrieve the value. Assert value is sane.

2004-10-22 Paul Jakma <paul@dishone.st>

	* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()
          function.
        * ospf_packet.c: (ospf_read) manually look up ifindex
          if system could not have returned one, eg openbsd, thanks to Rivo
	  Nurges for highlighting problem and fix.
          Change setsockopt_pktinfo to setsockopt_ifindex.

2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* ospf_snmp.c: (ospf_snmp_if_update) Fix logic to handle PtP links
	  with dedicated subnets properly.
	* ospf_lsa.c: (lsa_link_ptop_set) ditto.
	* ospfd.c: (ospf_network_match_iface) ditto.
	  (ospf_network_run) ditto.
	* ospf_interface.c: (ospf_if_is_configured) ditto.
	  (ospf_if_lookup_by_prefix) ditto.
	  (ospf_if_lookup_recv_if) ditto.
	* ospf_vty.c: (show_ip_ospf_interface_sub) Display the peer or
	  broadcast address if present.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* ospf_main.c: Unbreak compilation with ospfapi disabled.
	* ospf_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.

2004-10-12 Hasso Tepper <hasso at quagga.net>

	* ospf_main.c, ospf_opaque.c: Unbreak ospfclient compilation - move
	  static variable from ospf_main.c into ospf_opaque.c.

2004-10-11 Hasso Tepper <hasso at quagga.net>

	* ospf_main.c, ospf_opaque.c: Disable ospfapi init by default. New
	  command line switch to enable it.

2004-10-11 Paul Jakma <paul@dishone.st>

	* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order
	  remove ntohs that should have dissappeared. Take struct ip
	  as argument, caller has to know there's an IP header at start of
	  stream anyway.
	* ospf_dump.h: update declaration of ospf_ip_header_dump.
	* ospf_packet.c: (ospf_write) correct call to
	  sockopt_iphdrincl_swab_htosys which was munging the header.
	  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.
	  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as
	  we have it.
	* (global) Const char update and signed/unsigned fixes.
	* (various headers) size defines should be unsigned.
	* ospf_interface.h: remove duplicated defines, include the
	  authoritative header - though, these defines should probably
          be moved to a dedicated header, or ospfd.h.
	* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.
	* ospf_packet.c: (ospf_write) cast result of shift to unsigned.

2004-10-08 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: Fix compiler warnings: make some strings const, signed ->
	  unsigned, remove unused variables etc.

2004-10-07  Greg Troxel  <gdt@claude.ir.bbn.com>

	* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don't
	use of variable names 'node' and 'nextnode' to avoid possible
	conflict with list macros.  Move variable declaration inside for
	loop after a statement to top of function.

2004-10-07 Paul Jakma <paul@dishone.st>

	* ospf_snmp.c: Missed list typedef update
	* ospf_dump.c: Include sockopt.h for header swab functions.

2004-10-05 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: replace ospf_swap_iph_to... with
          sockopt_iphdrincl_swab_...

2004-10-03 James R. Leu <jleu at mindspring.com>

	* ospf_zebra.c: Read router id related messages from zebra daemon.
	  Schedule router-id update thread if it's changed.
	* ospfd.c: Remove own router-id selection function. Use router id from
	  zebra daemon if it isn't manually overriden in configuration.

2004-09-27 Paul Jakma <paul@dishone.st>

	* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER
	  Apply to offset too. Print ip_cksum, lets not worry about
	  possible 2.0.37 compile problems.
	* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use
	  HAVE_IP_HDRINCL_BSD_ORDER.
	  (ospf_recv_packet) ditto.
	  (ospf_write) Fixup iov argument to ospf_write_frags.
          (struct msghdr).msg_name is caddr_t on most platforms.
	  (ospf_recv_packet) ditto. And msg_flags is not always there
          memset struct then set fields we care about rather than
          initialise all fields individually.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* ospf_abr.c, ospf_dump.c, ospf_lsa.c, ospf_packet.c, ospf_vty.c,
	  ospf_zebra.c: Fix compiler warnings.

2004-09-24 Paul Jakma <paul@dishone.st>

        * ospf_apiserver.{c,h}: lists typedef removal cleanup.
          update some list loops to LIST_LOOP. some miscellaneous indent
          fixups.
          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of
          referenced node in loop.
 	  (ospf_apiserver_term) loops calling ospf_apiserver_free, which
          deletes referenced nodes from apiserver_list, fixed.
        * ospf_interface.h: lists typedef removal cleanup.
        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list
          loops to LIST_LOOP. miscellaneous style and indent fixups.
        * ospf_te.{c,h}: ditto
	* ospf_packet.c: lists typedef removal cleanup.
          (ospf_write) ifdef fragmentation support. move actual
	  fragmentation out to a new, similarly ifdefed, function.
	  (ospf_write_frags) fragmented write support, moved from previous.

2004-09-23 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

2004-09-12 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: Fix bugzilla #107
 	  (ospf_packet_max) get rid of the magic 88 constant
	  (ospf_swab_iph_ton) new function. set ip header to network order,
	  taking BSDisms into account.
	  (ospf_swab_iph_toh) the inverse.
	  (ospf_write) Add support for IP fragmentation, will only work on
	  linux though, other kernels make it impossible. get rid of the
	  magic 4 constant.
	  (ospf_make_ls_upd) Bound check to end of stream, not to
	  interface mtu.
	  (ospf_ls_upd_packet_new) New function, allocate upd packet
	  taking oversized LSAs into account.
	  (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,
	  rather than statically allocating mtu sized packet buffer, which
	  actually was wrong - it didnt take ip header into account, which
	  should not be included in packet buffer.
	  (ospf_ls_upd_send_queue_event) minor tweaks and remove
	  TODO comment.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.c (ospf_spf_calculate): Many more comments and debug
	  print statements.  New function ospf_vertex_dump used in debugging.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.h (struct vertex): Comments for flags and structure members.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_route.c: When finding an alternate route, log cost as well.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_interface.c (ospf_lookup_if_params): Initialize af in
	  struct prefix allocated on stack.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send
	  acks to AllSPFRouters, rather than All-DR.

2004-08-27  Hasso Tepper  <hasso at quagga.net>

	* ospf_vty.c: Don't print ospf network type under interface only
	  if interface is in broadcast mode and interface type really is
	  broadcast. Fixes Bugzilla #108.

2004-08-27  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.c (ospf_nexthop_calculation): Initialize address family
	  in on-stack struct prefix_ipv4.  Fixes point-to-multipoint SPF
	  calculation.

2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.c (ospf_recv_packet): adjust size declaration of
	  buffer used to get interface index so that it compiles on other
	  than Linux and includes the required alignment space.  Probably
	  this was only working on sparc/sparc64 because most of
	  sockaddr_dl was not being written.

2004-08-19 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: update to match sockopt renames.

2004-08-04 Paul Jakma <paul@dishone.st>

	* ospf_spf.c: (ospf_spf_consider_nexthop) Add comment about issue.
	  Compare only against list head - all nexthops must be same cost
	  anyway, fixes a reference-listnode-after-delete bug noted by
	  Kir Kostuchenko.
	  (ospf_nexthop_calculation) Use ospf_spf_consider_nexthop for all
	  candidates attached to root.

2004-07-27 Paul Jakma <paul@dishone.st>

        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from
          last fix for ospfd wedging due to oversize LSAs: dont list loop on
          ospf_ls_upd_queue_send() - guaranteed segfault.

2004-07-27 Paul Jakma <paul@dishone.st>

	* ospf_opaque.c: (ospf_opaque_lsa_flush_schedule) do not NULL out
	  the LSA as then free_opaque_info_per_id() can never unlock (and
	  free) the LSA. Reported by Gunnar Stigen.

2004-07-23 Paul Jakma <paul@dishone.st>

	* ospf_network.c: Replace PKTINFO/RECVIF with call to
	  setsockopt_pktinfo
	* ospf_packet.c: Use getsockopt_pktinfo_ifindex and
	  SOPT_SIZE_CMSG_PKTINFO_IPV4.

2004-07-14 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (ospf_ls_upd_send_queue_event) Partial fix for
	  problem reported by Peter Frost amongst others, where function
	  will spin indefinitely if update list contains LSAs greater than
	  MTU-headers or other condition leading to update list never being
          cleared. Problem of what to do with these LSAs remains.
          (ospf_make_ls_upd) add comment about large LSA problem,
	  indentation cleanup.

2004-07-01  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* Makefile.am (lib_LTLIBRARIES): make libospf shared

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: Add shlib support.

2004-06-10 Hasso Tepper <hasso@estpak.ee>

	* *: Removed ifdefs HAVE_NSSA.

2004-06-06 Paul Jakma <paul@dishone.st>

	* ospf_dump.c,ospf_lsa.c: Fix typos of merge of previous.
	  ospf_flood.c: (ospf_process_self_originated_lsa) fix zlog format

2004-05-31 Sagun Shakya <sagun.shakya@sun.com>

	* ospf_dump.c: (ospf_lsa_header_dump) LOOKUP can return null if
	  index is out of range.
	  ospf_flood.c: endianness fix
	  ospf_lsa.c: Missing ntohl's on (struct lsa *)->data->ls_seqnum
	  in various places.

2004-05-10 Hasso Tepper <hasso@estpak.ee>

	* ospf_zebra.c, ospfd.c: Move ospf_prefix_list_update() function
	  to ospf_zebra.c from ospfd.c and add redistribution updates if
	  route-map is used in redistribution.
	* ospf_main.c: Remove now useless call to ospf_init().

2004-05-08 Paul Jakma <paul@dishone.st>

	* ospf_zebra.c: Sync with lib/zclient changes

2004-05-05 Paul Jakma <paul@dishone.st>

	* ospf_network.c: (ospf_sock_init) Check whether IP_HDRINCL is
	  defined. Warn at compile and runtime. Use
	  IPTOS_PREC_INTERNETCONTROL otherwise.
	* ospf_packet.c:  (ospf_associate_packet_vl) cleanup, move
	  some of the checks up to ospf_read, return either a
	  virtual link oi, or NULL.
	  (ospf_read) Cleanup, make it responsible for checks. Remove
	  the nbr lookup - moved to ospf_neighbor. Adjust all nbr
	  lookups to use new wrappers exported by ospf_neighbor.
	* ospf_neighbor.h: Add ospf_neigbour_get and ospf_nbr_lookup.
	* ospf_neighbor.c: (ospf_neigbour_get) Index ospf_interface
	  neighbour table by router-id for virtual-link ospf_interfaces,
	  not by peer_addr (which breaks for asymmetric vlinks)
	  (ospf_nbr_lookup) add a wrapper for nbr lookups to deal with
	  above.
	* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface
	  address for either end of a virtual-link, and hence potential cost
	  changes.

2004-04-22 Hasso Tepper <hasso@estpak.ee>

	* ospf_zebra.c: Don't ignore reject/bh routes, it's the only way
	  to "summarize" routes in ASBR at the moment.

2004-04-20 Hasso Tepper <hasso@estpak.ee>

	* ospfd.c: Unset NP flag if area is going to be normal or stub.
	  Fixes UNH OSPF_NSSA.1.2a comment.
	* ospf_abr.c: Originate default into stub/nssa area even if
	  summaries are disabled.
	* ospf_zebra.c: Don't attempt to redistribute 127.0.0.0/8.

2004-04-19 Hasso Tepper <hasso@estpak.ee>

	* ospf_vty.c: Don't warn that export- and import-list can't be
	  configured to backbone area if they are applied and are working
	  fine.

2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* ospf_packet.c: Don't drop packets in Solaris x86.
	  [quagga-dev 1005].

2004-03-18 Amir Guindehi <amir@datacore.ch>

	* ospf_opaque.c: Attempt to correct the incorrect behavior of
	Quagga's ospfd in the special situation that a node's opaque
	capability has changed as "ON -> OFF -> ON". [quagga-dev 843].

2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range
	  should be configured with the highest cost path within the range,
	  not lowest.

2004-02-17 Paul Jakma <paul@dishone.st>

	* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface
	  params, nor the interface structure, if an interface delete
	  message is received from zebra.
	* ospf_interface.c: (ospf_if_delete_hook) Delete the interface
	  params and interface, ie that which was previously removed in
	  (ospf_interface_delete) above.

2004-02-11 Hasso Tepper <hasso@estpak.ee>
	* ospf_interface.c, ospf_zebra.c: Don't attempt to read path->oi->ifp
	  if oi doesn't exist any more.

2004-02-11 Vadim Suraev <vadim.suraev@terayon.com>
	* ospf_packet.c (ospf_ls_upd): Router should flush received network
	  LSA if it was originated with older router-id ([zebra 14710] #6).

2003-12-08 Mattias Amnefelt <mattiasa@kth.se>

	* ospf_packet.c: (ospf_recv_packet) OpenBSD now leaves iph.ip_len
	  network byte order.

2003-12-05  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* ospfd.c (ospf_network_match_iface): Rewrite code for clarity
	while trying not to change semantics.  Add ifdefed-out code to
	avoid matching ppp interfaces whose destination address does not
	also match the prefix under consideration, to help out people with
	problems due to as-yet-unfixed bugs with p2p interfaces coming and
	going.

2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>

        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route
          node in body of the loop to avoid chance that route node
          is unlocked and deleted before the next iteration tries to
          get next route node.

2003-05-24 Kenji Yabuuchi

	* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific
	  match for interface lookup.

2003-05-18 Hasso Tepper <hasso@estpak.ee>

	* ospf_vty.c: Show NSSA LSA route info in "show ip ospf database"
	output

2003-05-16 Hasso Tepper <hasso@estpak.ee>

	* ospf_lsa.c: Fix handling of NSSA

2003-04-23 Hasso Tepper <hasso@estpak.ee>

	* ospf_vty.c: fix "router xxx" node commands in vtysh

2003-04-19 Hasso Tepper <hasso@estpak.ee>

	* {ospf_abr,ospfd}.c: area id's DECIMAL -> ADDRESS
	* ospf_routemap.c: sync daemon's route-map commands to have same
	  syntax.

2003-04-19 Sergey Vyshnevetskiy <serg@vostok.net>

	* ospf_packet.c: Add missing param to zlog
	* ospf_flood.c: remove unused vars

2003-04-17 Denis Ovsienko <zebra@pilot.org.ua>

	* ospf_interface.c: fix incorrect memset

2003-04-10 Amir Guindehi <amir@datacore.ch>

	* ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup.

2003-04-03 David Watson <dwatson@eecs.umich.edu>

	* ospf_lsa.c: byte order fix

2002-03-17  Amir Guindehi <amir@datacore.ch>

        * ospf_apiserver.[ch]: Merge Ralph Keller's OSPFAPI support.
        * ospf_api.[ch]: Merge Ralph Keller's OSPFAPI support.
	* ospfclient: OSPFAPI demonstration client.

2003-01-23  Masahiko Endo <endo@suri.co.jp>

	* ospf_ism.c: NSM event schedule bug fix.

2002-10-30  Greg Troxel <gdt@ir.bbn.com>

	* ospf_packet.c (ospf_make_md5_digest): MD5 length fix.

2002-10-23  endo@suri.co.jp (Masahiko Endo)

	* ospf_opaque.c: Update Opaque LSA patch.

2002-10-23  Ralph Keller <keller@tik.ee.ethz.ch>

	* ospf_vty.c (show_ip_ospf_database): Fix CLI parse.

2002-10-23  Juris Kalnins <juris@mt.lv>

	* ospf_interface.c (ospf_if_stream_unset): When write queue
	becomes empty stop write timer.

2002-10-10  Greg Troxel <gdt@ir.bbn.com>

	* ospf_packet.c (ospf_check_md5_digest): Change >= to > to make it
	conform to RFC.

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2002-06-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_spf.c (ospf_nexthop_calculation): Add NULL set to oi and
	check of l2.  Reported by: Daniel Drown <dan-zebra@drown.org>
	(ospf_lsa_has_link): LSA Length calculation fix.  Reported by:
	Paul Jakma <paulj@alphyra.ie>.

	* ospfd.c (ospf_if_update): Fix nextnode reference bug.  Reported
	by: juris@mt.lv.

2002-01-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospfd.c: Merge [zebra 11445] Masahiko ENDO's Opaque-LSA support.

2001-08-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_interface.c (ospf_add_to_if): Use /32 address to register
	OSPF interface information.
	(ospf_delete_from_if): Likewise.

	* ospf_zebra.c (ospf_interface_address_delete): Likewise.

2001-08-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_zebra.c (ospf_redistribute_unset): When redistribute type
	is OSPF, do not unset redistribute flag.

2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-08-12  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospfd.c (ospf_config_write): auto-cost reference-bandwidth
	configuration display.

2001-07-24  David Watson <dwatson@eecs.umich.edu>

	* ospf_spf.c (ospf_spf_next): Modify ospf_vertex_add_parent to
	check for an existing link before connecting the parent and child.
	ospf_nexthop_calculation is also modified to check for duplicate
	entries when copying from the parent.  Finally, ospf_spf_next
	removes duplicates when it merges two equal cost candidates.

2001-07-23  itojun@iijlab.net

	* ospfd.c (show_ip_ospf_neighbor): Check ospf_top before use it
	[zebra 8549].

2001-07-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_packet.c (ospf_write): Remove defined(__OpenBSD__) to make
	it work on OpenBSD.

2001-06-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_zebra.c (config_write_ospf_default_metric): Display
	default-metric configuration.

2001-06-18  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_ia.h (OSPF_EXAMINE_SUMMARIES_ALL): Remove old macros.

2001-05-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_snmp.c (ospfIfEntry): Fix interface lookup bug to avoid
	crush.
	(ospfIfMetricEntry): Likewise.

2001-03-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_read): Fix typo.  Reported by: "Jen B
	Lin'Kova" <jen@stack.net>.

2001-03-15  Gleb Natapov <gleb@nbase.co.il>

	* ospf_interface.c (ip_ospf_network): Set interface parameter.
	(interface_config_write): Add check for OSPF_IFTYPE_LOOPBACK.

	* ospf_zebra.c (ospf_interface_add): Set interface parameter.

2001-02-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_recv_packet): Solaris also need to add
	(iph.ip_hl << 2) to iph.ip_len.

2001-02-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospfd.h (OSPF_LS_REFRESH_TIME): Fix OSPF_LS_REFRESH_TIME value.
	Suggested by: David Watson <dwatson@eecs.umich.edu>.

	* ospf_zebra.c (zebra_init): Remove zebra node.

	* ospfd.c (ospf_area_range_set): Function name is changed from
	ospf_ara_range_cmd.
	(ospf_area_range_unset): New function which separated from DEFUN.
	New commands are added:
	"no area A.B.C.D range A.B.C.D/M advertise"
	"no area <0-4294967295> range A.B.C.D/M advertise"
	"no area A.B.C.D range A.B.C.D/M not-advertise"
	"no area <0-4294967295> range A.B.C.D/M not-advertise"

	* ospf_lsa.c (ospf_lsa_more_recent): Fix previous change.

2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>

	* ospf_network.c (ospf_if_add_allspfrouters): Use
	setsockopt_multicast_ipv4.
	(ospf_if_drop_allspfrouters): Likewise.

	* ospf_lsa.c (ospf_router_lsa_install): Add rt_recalc flag.
	(ospf_network_lsa_install): Likewise.
	(ospf_summary_lsa_install): Likewise.
	(ospf_summary_asbr_lsa_install): Likewise.
	(ospf_external_lsa_install): Likewise.
	(ospf_lsa_install): Call ospf_lsa_different to check this LSA is
	new one or not.

2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_zebra.c (ospf_interface_delete): Do not free interface
	structure when ospfd receive interface delete message to support
	pseudo interface.

2001-02-01  Dick Glasspool <dick@ipinfusion.com>

	* ospfd.c (area_range_notadvertise): Change area range "suppress"
	command to "not-advertise".

	* ospfd.h (OSPF_LS_REFRESH_TIME): Change OSPF_LS_REFRESH_TIME from
	1800 to 60.

	* ospf_abr.c (ospf_abr_update_aggregate): When update_aggregate is
	updating the area-range, the lowest cost is now saved.

	* ospf_lsa.c (ospf_lsa_more_recent): Routing to compare sequence
	numbers rather than creating overflow during calculation.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.91 is released.

2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_db_desc_proc): Do not continue process when
	NSM_SeqNumberMismatch is scheduled.
	(ospf_ls_req): Free ls_upd when return from this function.
	(ospf_ls_upd_timer): When update list is empty do not call
	ospf_ls_upd_send().  Suggested by: endo@suri.co.jp (Masahiko
	Endo).

2001-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_lsa.c (ospf_maxage_flood): Flood LSA when it reaches
	MaxAge.  RFC2328 Section 14.
	(ospf_maxage_lsa_remover): Call above function during removing
	MaxAge LSA.

2001-01-26  Dick Glasspool <dick@ipinfusion.com>

	* ospf_flood.c (ospf_flood_through_as): Function is updated for
	NSSA Translations now done at ospf_abr.c with no change in P-bit.

	* ospf_lsa.c (ospf_get_nssa_ip): Get 1st IP connection for Forward
	Addr.
	(ospf_install_flood_nssa):  Leave Type-7 LSA at Lock Count = 2.

	* ospf_ase.c (ospf_ase_calculate_route): Add debug codes.

	* ospf_abr.c (ospf_abr_translate_nssa): Recalculate LSA checksum.

	* ospf_packet.h (OSPF_SEND_PACKET_LOOP): Added for test packet.

	* ospf_dump.c (ospf_lsa_type_msg): Add OSPF_GROUP_MEMBER_LSA and
	OSPF_AS_NSSA_LSA.

	* ospfd.c (data_injection): Function to inject LSA.  This is
	debugging command.

2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_route.c (ospf_route_match_same): Remove function.
	(ospf_route_match_same_new): Renamed to ospf_route_match_same.

	* ospf_zebra.c (ospf_interface_address_delete): Add check for
	oi->address.  Suggested by Matthew Grant
	<grantma@anathoth.gen.nz>.
	(ospf_zebra_add): Remove function.
	(ospf_zebra_add_multipath): Rename to ospf_zebra_add.

	* ospf_interface.c: Remove HAVE_IF_PSEUDO part.

	* ospf_zebra.c: Likewise.

2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_ase.c: Remove OLD_RIB part.

	* ospf_route.c: Likewise.

	* zebra-0.90 is released.

	* ospf_packet.c (ospf_recv_packet): Use ip_len adjestment code to
	NetBSD.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_route.c (ospf_route_delete): Use
	ospf_zebra_delete_multipath.

2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>

	* ospf_interface.c (ospf_if_cleanup): Function name is renamed
	from ospf_if_free().  Rewrite whole procudure to support primary
	address deletion.

	* ospf_zebra.c (ospf_interface_address_delete): Add primary
	address deletion process.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_recv_packet): OpenBSD has same ip_len
	treatment like FreeBSD.

2001-01-09  endo@suri.co.jp (Masahiko Endo)

	* ospf_packet.c (ospf_recv_packet): FreeBSD kernel network code
	strips IP header size from receiving IP Packet.  So we adjust
	ip_len to whole IP packet size by adding IP header size.

2001-01-08  endo@suri.co.jp (Masahiko Endo)

	* ospf_network.c (ospf_serv_sock): When socket() is failed return
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index f3becf4..40032a4 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,7 @@
+2005-02-14 Paul Jakma <paul.jakma@sun.com>
+
+	* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.
+
 2005-02-11 Hasso Tepper <hasso at quagga.net>
 
 	* ospf_lsdb.c: Fix sum of checksums calculation.
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index c4dc56f..c4e7f52 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -2096,7 +2096,10 @@
   ibuf = stream_new (ip_len);
   iov.iov_base = STREAM_DATA (ibuf);
   iov.iov_len = ip_len;
-  ret = recvmsg (fd, &msgh, 0);
+  if ( (ibuf = stream_new (ip_len)) == NULL)
+    return NULL;
+  
+  ret = stream_recvmsg (ibuf, fd, &msgh, 0, ip_len);
   
   ifindex = getsockopt_ifindex (AF_INET, &msgh);