Age | Commit message (Collapse) | Author |
|
* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to
Andrew Schorr.
* ospf_vty.c: (ospf_config_write) fix write out of spf timers
configuration.
|
|
* (general) SPF millisecond resolution timer with adaptive,
linear back-off holdtime. Prettification of ospf_timer_dump.
* ospf_dump.c: (ospf_timeval_dump) new function. The guts of
ospf_timer_dump, but made to be more dynamic in printing out
the relative timeval, sliding the precision printed out
according to the value.
(ospf_timer_dump) guts moved to ospf_timeval_dump.
* ospf_dump.h: export ospf_timeval_dump.
* ospf_flood.c: (ospf_flood) remove gettimeofday, use
the libzebra exported recent_time instead, as it's not
terribly critical to have time exactly right - the dropped
LSA will be retransmited to us if we don't ACK it.
* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we're
not transmitting, just putting LSA back on update transmit list.
* ospfd.h: delay and holdtimes should be unsigned.
Add spf_max_holdtime and spf_hold_multiplier.
Update default defines for delay and hold time to be in msec.
(struct ospf) change the SPF timestamp to a struct timeval.
Remove ospf_timers_spf_(un)?set.
* ospfd.c: (ospf_timers_spf_{set,unset}) removed.
(ospf_new) initialise spf_max_holdtime and spf_hold_multiplier
* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval
now, update with gettimeofday.
(ospf_spf_calculate_schedule) Change SPF timers to millisecond
resolution.
Make the holdtime be adaptive, with a linear increase in
holdtime ever consecutive SPF run which occurs within holdtime
of previous SPF, bounded by spf_max_holdtime.
* ospf_vty.c: Update spf timers commands.
(ospf_timers_spf_set) trivial helper.
(ospf_timers_throttle_spf_cmd) new command to set SPF delay,
initial hold and max hold times with millisecond resolution.
(ospf_timers_spf_cmd) Deprecated. Accept the old values,
convert to msec, truncate to new limits.
(no_ospf_timers_throttle_spf_cmd) set timers to defaults.
(no_ospf_timers_spf_cmd) deprecated form, same as previous.
(show_ip_ospf_cmd) Display SPF parameters and times.
(show_ip_ospf_neighbour_header) Centralise the 'sh ip os ne'
header.
(show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of
the multiple spaces which were making the lines even longer.
(show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header
(show_ip_ospf_neighbor_all_cmd) ditto and fix the field
widths for NBMA neighbours.
(show_ip_ospf_neighbor_int) Use header function.
(show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,
local array - safer.
(show_ip_ospf_neighbor_detail_sub) ditto
(ospf_vty_init) install the new SPF throttle timer commands.
|
|
* (general) OSPF fast, sub-second hello and 1s dead-interval
support. A warning fix. Millisec support for ospf_timer_dump.
Change auto-cost ref-bandwidth to add a comment to write out
of config, rather than printing annoying messages to vty on
startup.
* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.
Callers typically specify a length of 9, so most see
millisecs unless they specify the additional length.
* ospf_interface.h: (struct ospf_interface) new interface param,
fast_hello.
* ospf_interface.c: (ospf_if_table_lookup) add brackets,
gcc warning fix.
(ospf_new_if_params) Initialise fast_hello param.
(ospf_free_if_params) Check whether fast_hello is configured.
(ospf_if_new_hook) set fast_hello to default.
* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to
prevent funny side-effects from its if statement when this
macro is used conditionally by other macros.
(OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.
(OSPF_HELLO_TIMER_ON) new macro to set hello timer according
to whether fast_hello is set.
* ospf_ism.c: Update all setting of the hello timer to use
either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The
former is used when hello is to be sent immediately.
* ospf_nsm.c: ditto
* ospf_packet.c: (ospf_hello) hello-interval is not checked
for mismatch if fast_hello is set.
(ospf_read) Annoying nit, fix "no ospf_interface" to be debug
rather than a warning, as it can be perfectly normal to
receive packets when logical subnets are used.
(ospf_make_hello) Set hello-interval to 0 if fast-hellos are
configured.
* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying
nit, don't vty_out if this command is given, it gets tired
quick.
(show_ip_ospf_interface_sub) Print the hello-interval
according to whether fast-hello is set or not.
Print the extra 5 millisec characters from (ospf_timer_dump)
if fast-hello is configured.
(ospf_vty_dead_interval_set) new function, common to all
forms of dead-interval command, to set dead-interval and
fast-hello correctly. If a dead-interval is given, unset
fast-hello, else if a hello-multiplier is set, set
dead-interval to 1 and fast-hello to given multiplier.
(ip_ospf_dead_interval_addr_cmd) use
ospf_vty_dead_interval_set().
(ip_ospf_dead_interval_minimal_addr_cmd) ditto.
(no_ip_ospf_dead_interval) Unset fast-hello.
(no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval
should set it to OSPF_HELLO_INTERVAL_DEFAULT, not
OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.
(config_write_interface) Write out fast-hello.
(ospf_config_write) Write a comment about
"auto-cost reference-bandwidth" having to be equal on all
routers. Hopefully just as noticeable as old practice of
writing to vty, but less annoying.
(ospf_vty_if_init) install the two new dead-interval
commands.
* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL
and OSPF_FAST_HELLO_DEFAULT.
|
|
* (general) SPF memory management cleanup and fix for rare
double-free bug.
* ospf_spf.h: (struct vertex_parent) New struct to hold parent
specific data, eg the backlink and the parent vertex pointer,
and point to the appropriate general struct vertex_nexthop.
(struct vertex_nexthop) remove parent vertex pointer, so
this struct can be shared across vertices.
(struct vertex) rename list child to list children. Remove
list of nexthops, replace with list of vertex_parents.
* ospf_spf.c: (update_stat) trivial, remove cast from void *.
(vertex_nexthop_new) remove init of parent - field is gone
from struct vertex_nexthop.
(ospf_canonical_nexthops_free) Remove the canonical
vertex_nexthop memory objects. These are the vertex_nexthops
attached to the first level of router vertices from the root.
(vertex_parent_new) new function, create a vertex_parent.
(vertex_parent_free) ditto, but free it.
(ospf_vertex_new) Update to match changes to struct vertex.
(ospf_vertex_free) Recursively free a struct vertex and its
children. The parent list is used as a reference count.
vertex_nexthops must be free seperately, if required.
(ospf_vertex_dump) update to match struct vertex changes.
Print out backlink of parents too.
(ospf_vertex_add_parent) ditto.
(ospf_lsa_has_link) update comment.
(ospf_nexthop_add_unique) removed, not needed anymore.
(ospf_nexthop_merge) ditto.
(ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.
Simplified to just create vertex_parent and add it.
(ospf_spf_flush_parents) new function, flush out the parent
list.
(ospf_nexthop_calculation) Take the relevant route_lsa_link
as an argument, which simplifies things and removes the need
for the hack in ospf_nexthop_add_unique - ospf_spf_next
already knew exactly which link the cost calculated was for.
Update to match struct vertex changes too.
(ospf_spf_next) Don't create a vertex for W unnecessarily, if
it's there's a vertex already created for W, use it, and
hence there's no need to free it either.
Update some manipulation/comparisons of distance to match.
Flush the parent list if a lower cost path is found.
(ospf_spf_route_free) unused, removed.
(ospf_spf_dump) match the struct vertex changes, and dump the
ifname if possible.
(ospf_spf_calculate) At end of SPF, free the canonical nexthops
and call ospf_vertex_free on the root vertex to free the
entire tree.
* ospf_interface.c: (ospf_vl_set_params) match struct vertex
changes.
* ospf_route.c: (ospf_intra_route_add) ditto
(ospf_route_copy_nexthops_from_vertex) ditto
* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.
|
|
* ospf_api.c: sign warnings.
* ospf_apiserver.c: sign warning and convert all the struct
in_addr initialisations so as not to make assumptions about
how this struct is organised, initialise the s_addr member
explicitely.
* ospf_packet.c: Add const qualifier to auth_key.
|
|
* ospf_snmp.c: Avoid mixing interface and ospf_interface objects
which now allows snmpwalk to work with ospfIfTable and
also with ospfIfMetricTable
|
|
* zebra.h: Declare new functions zebra_route_string() and
zebra_route_char().
* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New
functions to map zebra route numbers to strings.
* zebra_vty.c: (route_type_str) Remove obsolete function: use new
library function zebra_route_string() instead. Note that there
are a few differences: for IPv6 routes, we now get "ripng" and
"ospf6" instead of the old behavior ("rip" and "ospf").
(route_type_char) Remove obsolete function: ues new library function
zebra_route_char() instead. Note that there is one difference:
the old function returned 'S' for a ZEBRA_ROUTE_SYSTEM route,
whereas the new one returns 'X'.
(vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace
route_type_str() with zebra_route_string().
(vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()
with zebra_route_char().
* bgp_vty.c: (bgp_config_write_redistribute) Use new library function
zebra_route_string instead of a local hard-coded table.
* ospf6_asbr.c: Remove local hard-coded tables zroute_name and
zroute_abname. Change the ZROUTE_NAME macro to use new library
function zebra_route_string(). Remove the ZROUTE_ABNAME macro.
(ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with
a call to zebra_route_char(), and be sure to fix the format string,
since we now have a char instead of a char *.
* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and
zebra_route_abname. Note that the zebra_route_name[] table
contained mixed-case strings, whereas the zebra_route_string()
function returns lower-case strings.
(ospf6_zebra_read_ipv6): Change debug message to use new library
function zebra_route_string() instead of zebra_route_name[].
(show_zebra): Use new library function zebra_route_string() instead
of zebra_route_name[].
* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.
(ospf_redist_string) New function implemented using new library
function zebra_route_string(). Note that there are a few differences
in the output that will result: the new function returns strings
that are lower-case, whereas the old table was mixed case. Also,
the old table mapped ZEBRA_ROUTE_OSPF6 to "OSPFv3", whereas the
new function returns "ospf6".
* ospfd.h: Remove extern struct message ospf_redistributed_proto[],
and add extern const char *ospf_redist_string(u_int route_type)
instead.
* ospf_asbr.c: (ospf_external_info_add) In two messages, use
ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).
* ospf_vty.c: Remove local hard-coded table distribute_str.
(config_write_ospf_redistribute,config_write_ospf_distribute): Use
new library function zebra_route_string() instead of distribute_str[].
* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,
ospf_redistribute_default_set,ospf_redistribute_check)
In debug messages, use ospf_redist_string() instead of
LOOKUP(ospf_redistributed_proto).
* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded
table str[]. Replace str[] with calls to new library function
zebra_route_string().
* ripd.c: Remove local hard-coded table route_info[].
(show_ip_rip) Replace uses of str[] with calls to new library
functions zebra_route_char and zebra_route_string.
* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded
table str[]. Replace str[i] with new library function
zebra_route_string(i).
* ripngd.c: Remove local hard-coded table route_info[].
(show_ipv6_ripng) Use new library function zebra_route_char() instead
of table route_info[].
|
|
* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:
remove unused DEBUG
|
|
* lib/smux.[ch]: allow to retreive global OID (identified by <0
namelen).
* ospf_ism.c: generate SNMP traps on Interface state change
* ospf_nsm.c: generate SNMP traps on Neighbour state change
* ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.
|
|
* ospfd/ospf_vty.c: forece default route LSA to be re_issued whenever
cost is changed ( [no] ip ospf area XXX default-cost YYY)
Support ignore-mtu option
* ospfd/ospfd.h: define OSPF_MTU_IGNORE_DEFAULT
* ospfd/ospf_packet.c: support ignore-mtu option
* ospfd/ospf_interface.h: field added for skipping MTU check
* ospfd/ospf_interface.c: fix memory leak in ospf_crypt_key_delete()
Set mtu_ignore field to default value
* ospfd/ospf_abr.[ch]: export ospf_abr_announce_network_to_area()
* ospfd/ospf_ism.h: add MACRO to convert internal ISM status into SNMP
correct values
* ospfd/ospf_snmp.c: add sanity check on LSA type in lsdb_lookup_next()
convert OSPFIFSTATE internal status into SNMP values
|
|
* lib/md5-gnu.h: removed
* lib/md5.h: replaces md5-gnu.h
* lib/Makefile.am: use correct md5.h
* lib/md5.c: import from WIDE
* ospfd/ospf_packet.c: use new md5 API
* ripd/ripd.c: use new md5 API
|
|
* ospf_lsa.h: (ospf_external_lsa_flush) Comment out the 5th argument
(nexthop) since it is not used in the function (except inside
some commented-out code).
* ospf_lsa.c: (ospf_external_lsa_flush,ospf_external_lsa_refresh)
Comment out the 5th argument to ospf_external_lsa_flush.
* ospf_asbr.c: (ospf_redistribute_withdraw) Comment out 5th arg
to ospf_external_lsa_flush.
* ospf_vty.c: (no_ospf_default_information_originate) Eliminate 5th
uninitialized nexthop arg to ospf_external_lsa_flush.
* ospf_zebra.c: (ospf_zebra_read_ipv4) Comment out 5th arg
to ospf_external_lsa_flush.
* ospfd.c: (ospf_network_set) Comment out 5th arg
to ospf_external_lsa_flush.
|
|
* ospf_opaque.c:
(ospf_opaque_lsa_refresh_schedule,ospf_opaque_lsa_flush_schedule)
No need to call ospf_lookup(), just use lsa0->area->ospf instead.
|
|
Interface should be specified by name now.
[backport candidate]
|
|
print info about it.
Fixes bugzilla #213. [backport candidate]
|
|
dealing with routemaps. There is ospf->route_map[ZEBRA_ROUTE_MAX]
for default-information.
Fixes bugzilla #208.
[backport candidate]
|
|
* ospf_abr.c: (ospf_abr_announce_network_to_area) SET_FLAG
should be on lsa not old, which may be freed for one thing,
obviously.
|
|
* ospfd.h: add OSPF_ABR_DEFAULT for convenience, make
OSPF_ABR_CISCO be the default ABR type.
* ospfd.c: (ospf_new) initialise abr_type to OSPF_ABR_DEFAULT
* ospf_vty.c: (no_ospf_abr_type_cmd) add standard as a negatable
abr_type. default abr_type should be OSPF_ABR_DEFAULT.
(ospf_config_write) test whether default abr_type against
OSPF_ABR_DEFAULT, rather than any specific ABR_TYPE.
|
|
|
|
[backport candidate]
|
|
* ospf_spf.c: Try get more information on a SEGV under
ospf_spf_vertex_add_parent.
(ospf_vertex_free) NULL out the child and nexthop lists
(ospf_vertex_add_parent) nexthop and child can not be NULL
vertex_nexthop's parent->child list can not be NULL
(ospf_spf_next) w and cw are per-loop iteration variables, move
declarations into loop body.
|
|
changes - oi->ifp->status doesn't give to us info about ISM,
oi->state does.
[backport candidate]
|
|
* ospf_ism.c (ospf_elect_bdr/ospf_elect_dr): Fix DR election bug.
|
|
* ospf_abr.c: (ospf_abr_update_aggregate) Fix comment, cost bug itself
had been fixed long ago by Sowmini.
|
|
* ospf_interface.c: (ospf_if_table_lookup) Fix a serious bug
a less serious one.
1: this function is supposed to lookup
entries in the oifs ospf_interface route_table and return either
an existing oi or NULL to indicate not found, its caller depends
on this, yet this function uses route_node_get which /always/
returns a route_node - one is created if none exists. Use
route_node_lookup instead. This should fix root cause of the
reports of the (ospf_add_to_if) assert being hit.
2: oi's are inserted into this table with prefixlength set to
/32 (indeed, it should be a hash table, not a route_table),
however prefixlength to lookup was not changed, if no valid entry
can be inserted other than /32, then nothng but /32 should be
looked up. This possibly only worked by fluke..
Fix confirmed by 2 reporters (one list, one IRC), definitely a
backport candidate once it has been incubated in HEAD for a while.
Thanks to Patrick Friedel and Ivan Warren for testing.
|
|
* (general) Fix memory leaks in opaque AS-scope LSAs, reported and
with much debugging done by by scott collins <scollins@agile.tv>.
(possible backport candidate?)
* ospf_lsa.c: (ospf_discard_from_db) dont call
ospf_ase_unregister_external_lsa for opaque-lsa's, opaques are
never registered with ase in the first place.
* ospf_packet.c: (general) Disabuse opaque related code of its
tendency to try gather up things into temporary lists.
(ospf_ls_upd) remove the temporary lists opaque uses, call
opaque functions inline, just like all other types.
(ospf_ls_ack) ditto.
(ospf_recv_packet) fixup sign warning.
* ospf_opaque.c: (general) fix the unneeded use of lists, and
untwist some of the logic.
(ospf_opaque_self_originated_lsa_received) take a single LSA
as argument, not a list of them. Remove the list loop. Logic
otherwise unchanged.
(ospf_opaque_ls_ack_received) Mostly ditto. But untwist the logic,
move the actions up into the switch block, remove the goto's and
sanitise the logic near the end a bit.
* ospf_opaque.h: Adjust definitions of aforementioned functions
in ospf_opaque.c to match.
|
|
* configure.ac: Check for OSes which support passing ifindex in
struct ip_mreq.
* lib/sockopt.c: Add support for BSD style ifindex in ip_mreq.
* ospfd/ospf_network.c: Log ifindex on multicast membership leave/join
events.
|
|
* (general) extern and static qualifiers added.
unspecified arguments in definitions fixed, typically they should
be 'void'.
function casts added for callbacks.
Guards added to headers which lacked them.
Proper headers included rather than relying on incomplete
definitions.
gcc noreturn function attribute where appropriate.
* ospf_opaque.c: remove the private definition of ospf_lsa's
ospf_lsa_refresh_delay.
* ospf_lsa.h: export ospf_lsa_refresh_delay
* ospf_packet.c: (ospf_make_md5_digest) make *auth_key const,
correct thing to do - removes need for the casts later.
* ospf_vty.c: Use vty.h's VTY_GET_INTEGER rather than ospf_vty's
home-brewed versions, shuts up several warnings.
* ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and
VTY_GET_IPV4_PREFIX moved to lib/vty.h.
* ospf_zebra.c: (ospf_distribute_list_update_timer) hacky
overloading of the THREAD_ARG pointer should at least use
uintptr_t.
|
|
* ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget
to approve LSAs for the case where metric has changed, lsa gets
flushed otherwise. (backport candidate).
|
|
Implement non-blocking zclient I/O with buffering.
* zclient.h (struct zclient): Add two fields to support non-blocking
I/O: struct buffer *wb, and struct thread *t_write.
(zclient_free): Remove function.
(zebra_redistribute_send): Change 2nd arg from socket fd to
struct zclient * (needed to support non-blocking I/O and buffering).
(zclient_send_message): New function to send an arbitrary
message with non-blocking I/O.
* zclient.c (zclient_new): Create write buffer.
(zclient_free): Remove unused function.
(zclient_stop): Must cancel new t_write thread. Also, reset
all buffers: ibuf, obuf, and wb.
(zclient_failed): New helper function for typical error handling.
(zclient_flush_data): New thread to flush queued data.
(zclient_send_message): New function to send the message in
zclient->obuf to zebra using non-blocking I/O and buffering.
(zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
new zclient_send_message function instead of calling writen.
(zclient_start): Set socket non-blocking. Also, change 2nd arg
to zebra_redistribute_send from zclient->sock to zclient.
(zebra_redistribute_send): Change 2nd arg to struct zclient *.
Can now use zclient->obuf to assemble the message instead of
allocating a temporary stream. And call zclient_send_message to
send the message instead of writen.
(zclient_read): Convert to support non-blocking I/O by using
stream_read_try instead of deprecated stream_read.
(zclient_redistribute): Change 2nd arg to zebra_redistribute_send
from zclient->sock to zclient.
* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
Change 2nd arg to zebra_redistribute_send from zclient->sock
to zclient.
* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
of writen.
* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
from zclient->sock to zclient.
* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
Change 2nd arg to zebra_redistribute_send from zclient->sock
to zclient.
* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
The 2nd arg to zebra_redistribute_send is now zclient instead of
zclient->sock.
* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
function.
* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
to send the message to zebra instead of calling writen directly, since
zclient_send_message understands non-blocking I/O and will manage
the buffer queue appropriately.
(isis_zebra_finish): Remove unused function, particularly since
the zclient_free function has been removed.
|
|
* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a
function that does not exist.
* ospf6_interface.[ch]: (ospf6_interface_lookup_by_name) Remove unused
function.
|
|
* ospf_zebra.c: (zebra_interface_if_lookup) Must use
if_lookup_by_name_len.
|
|
* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.
* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.
(if_get_by_name) Tighten up code.
(interface) Use new function if_get_by_name_len.
* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len
function.
(zebra_interface_state_read) Use new if_lookup_by_name_len function.
* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
to save a memcpy.
* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
if_get_by_name_len function.
* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.
|
|
Fix problems when netlink interfaces are renamed (same ifindex used
for a new interface). Start cleaning up some problems with the way
interface names are handled.
* interface.c: (if_new_intern_ifindex) Remove obsolete function.
(if_delete_update) After distributing the interface deletion message,
set ifp->ifindex to IFINDEX_INTERNAL.
(if_dump_vty) Detect pseudo interface by checking if ifp->ifindex is
IFINDEX_INTERNAL.
(zebra_interface) Check return code from interface_cmd.func.
Do not set internal ifindex values to if_new_intern_ifindex(),
since we now use IFINDEX_INTERNAL for all pseudo interfaces.
* kernel_socket.c: (ifm_read) Fix code and comments to reflect that
all internal interfaces now have ifp->ifindex set to IFINDEX_INTERNAL.
* rt_netlink.c: (set_ifindex) New function used to update ifp->ifindex.
Detects interface rename events by checking if that ifindex is already
being used. If it is, delete the old interface before assigning
the ifindex to the new interface.
(netlink_interface, netlink_link_change) Call set_ifindex to update
the ifindex.
* if.h: Remove define for IFINDEX_INTERNBASE and add define
IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-
interfaces should have ifindex set to 0.
(if_new) Remove function.
(if_delete_retain) New function to delete an interface without
removing from iflist and freeing the structure.
(ifname2ifindex) New function.
* if.c: (if_new) Remove function (absorb into if_create).
(if_create) Replace function if_new with call to calloc.
Set ifp->ifindex to IFINDEX_INTERNAL. Fix off-by-one error
in assert to check length of interface name. Add error message
if interface with this name already exists.
(if_delete_retain) New function to delete an interface without
removing from iflist and freeing the structure.
(if_delete) Implement with help of if_delete_retain.
(ifindex2ifname) Reimplement using if_lookup_by_index.
(ifname2ifindex) New function to complement ifindex2ifname.
(interface) The interface command should check the name length
and fail with a warning message if it is too long.
(no_interface) Fix spelling in warning message.
(if_nametoindex) Reimplement using if_lookup_by_name.
(if_indextoname, ifaddr_ipv4_lookup) Reimplement using
if_lookup_by_index.
* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp->ifindex
to IFINDEX_INTERNAL.
* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead
of if_delete, since it is generally not safe to remove interface
structures. After deleting, set ifp->ifindex to IFINDEX_INTERNAL.
(zebra_interface_if_lookup) Tighten up code.
* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function
was commented out. But this is not safe: we should at least update
the ifindex when the interface is deleted. So the new version
updates the interface status and sets ifp->ifindex to
IFINDEX_INTERNAL.
(ospf6_zebra_route_update) Use if_indextoname properly.
* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface
flags to help with debugging.
* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp->ifindex
to IFINDEX_INTERNAL.
(zebra_interface_if_lookup) Make function static. Tighten up code.
* rip_interface.c: (rip_interface_delete) After deleting, set
ifp->ifindex to IFINDEX_INTERNAL.
* ripng_interface.c: (ripng_interface_delete) After deleting, set
ifp->ifindex to IFINDEX_INTERNAL.
|
|
* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging
is turned on.
[backport candidate]
|
|
* rt_netlink.c: (netlink_link_change) If the status of an
operative interface changes (e.g. MTU changes), the client
daemons should be notified by calling zebra_interface_up_update.
Previously, the information was being updated in zebra's
interface structure, but the clients were not notified of
changes to an operative interface.
* ospf_zebra.c: (ospf_interface_state_up) If the MTU of an operative
interface changes, print a debug message and call ospf_if_reset()
to simulate down/up on the interface.
* ospf_interface.h: Declare new function ospf_if_reset().
* ospf_interface.c: (ospf_if_reset) New function to call ospf_if_down
and ospf_if_up for all ospf interfaces attached to an interface.
|
|
* ospf_packet.c: (ospf_write_frags) Enhance error message to
show MTU. Also make function static.
(ospf_write) Enhance error message to show interface name and MTU.
Also make function static.
|
|
* ospf_vty.c (show_ip_ospf_interface_sub): Display interface MTU and
bandwidth; this is useful for debugging problems. Also, the function
should be static.
|
|
exist at all.
[backport candidate]
|
|
[backport candidate]
|
|
* ospf_lsa.c: (ospf_lsa_refresh_walker) If the system clock jumps
backward, then current time may be less than
ospf->lsa_refresher_started. This was causing invalid values
for ospf->lsa_refresh_queue.index resulting in infinite loops.
Problem fixed by casting the expression to unsigned before taking
the modulus.
[backport candidate]
|
|
* ospfd.h: Add new field struct stream *ibuf to struct ospf.
* ospfd.c: (ospf_new) Check return code from ospf_sock_init.
Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).
(ospf_finish) Call stream_free(ospf->ibuf.
* ospf_packet.c: (ospf_read) Call stream_reset(ospf->ibuf) and then
pass it to ospf_recv_packet for use in receiving the packet
(instead of allocating a new stream for each packet received).
Eliminate all calls to stream_free(ibuf).
(ospf_recv_packet) The struct stream *ibuf is now passed in as
an argument. No need to use recvfrom to peek at the packet
header (to see how big it is), just use ospf->ibuf which is
always large enough (this eliminates a system call to recvfrom).
Therefore, no need to allocate a stream just for this packet,
and no need to free it when done.
|
|
* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.
* ospf_spf.h: Add link to the LSA stat structure into vertex.
* ospf_spf.c: New functions cmp() and update_stat() to manage
candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),
ospf_install_candidate() and ospf_spf_register() functions not needed
any more. Update ospf_vertex_new(), ospf_spf_next() and
ospf_spf_calculate() functions to use pqueue instead of linked list.
|
|
we are not debugging.
|
|
Fixes bugzilla #153. [backport candidate]
|
|
* ospf_packet.c: (ospf_stream_copy) remove
(ospf_packet_dup) use stream_copy instead of ospf_stream_copy
|
|
* ospf_packet.c: (ospf_recv_packet) If there is somehow a runt
packet in the queue, it must be discarded. Improve warning messages.
Fix scope to static.
(ospf_read) Fix bug: should reset the read thread in all cases
to make sure we continue to get incoming messages.
|
|
* ospf_packet.c: (ospf_recv_packet) Fix silly error wrt allocating
ibuf. Thanks Andrew.
|
|
* 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
|
|
[backport candidate]
|