Age | Commit message (Collapse) | Author |
|
* 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) 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.
|
|
* (global): Fix up list loops to match changes in lib/linklist,
and some basic auditing of usage.
* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES
* HACKING: Add notes about deprecating interfaces and commands.
* lib/linklist.h: Add usage comments.
Rename getdata macro to listgetdata.
Rename nextnode to listnextnode and fix its odd behaviour to be
less dangerous.
Make listgetdata macro assert node is not null, NULL list entries
should be bug condition.
ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
with for loop, Suggested by Jim Carlson of Sun.
Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
"safety" of previous macro.
LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
distinguish from the similarly named functions, and reflect their
effect better.
Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section
with the old defines which were modified above,
for backwards compatibility - guarded to prevent Quagga using it..
* lib/linklist.c: fix up for linklist.h changes.
* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single
scan of the area list, rather than scanning all areas first for
INTER_ROUTER and then again for INTER_NETWORK. According to
16.2, the scan should be area specific anyway, and further
ospf6d does not seem to implement 16.3 anyway.
|
|
* 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.
|
|
* 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_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.
|
|
* 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.
|
|
* *.c: Change level of debug messages to LOG_DEBUG.
|
|
ripd might need some more testing though.
|
|
|
|
support of more significant changes not in this commit. The last item
in the ChangeLog below may be needed for p2mp to work correctly.
2004-08-31 David Wiggins <dwiggins@bbn.com>
* hash.c (hash_iterate): Save next pointer before calling
procedure, so that iteration works even if the called procedure
deletes the hash backet.
* linklist.h (listtail): new macro, not yet used.
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.
|
|
|
|
* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface
address for either end of a virtual-link, and hence potential cost
changes.
|
|
* ospf_spf.h: Add backlink field to struct vertex
* ospf_spf.h: (ospf_vertex_new) initialise backlink
(ospf_lsa_has_link) return index of link back to
vertex V from candidate vertex W, or -1 if no link exists.
(ospf_spf_next) save backlink index for candidate vertex
* ospf_interface.c: (ospf_vl_set_params) Use the backlink index
to determine correct address for virtual-link peers. Fall back
to older "pick first link" method if no backlink index exists.
|
|
* 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.
|
|
more. I'm not sure if this read should be attempted at all, but I'm trying
to keep code safe AND stable.
|
|
* ospfd/ospf_interface.c: (ospf_if_table_lookup) grab reference to
rn->info /before/ calling route_unlock_node() as some systems
may deliberately poison freed memory, eg FreeBSD 5.1.
see [quagga-dev 417].
|
|
* ospfd/ospf_interface: (ospf_if_lookup_table) fix compile errors
from previous patch. doh.
|
|
* ospfd/ospf_interface: (ospf_if_lookup_table) new function to
lookup oi for a given prefix in a given interfaces table of oi's.
(ospf_if_new) use ospf_if_lookup_table to deal with zebra
reporting new interface multiple times.
NB: This patch is a complete plaster-band of a hack. First, why is
zebra reporting interface events multiple times? Second, why does
ospfd maintain so many damn lists and tables relating to oi's -
these should be reconciled into one or two tables.
|
|
* lib/if.c: (if_cmp_func) new function, compare interface names in
alphabetical order.
(if_create) Take name as argument and add interface in sorted order.
(if_get_by_name),(interface_cmd) fixup calls to if_create - see
above.
(if_init) register list comparison function.
* lib/if.h: Add comparison function, modify if_create prototype.
* lib/zclient.c: Modify call to if_create.
* ospfd/ospf_interface.c: (ospf_vl_new) modify call to if_create.
change sprintf to snprintf.
* zebra/kernel_socket.c: (ifm_read) modify call to if_create.
|
|
* ospf_interface.c (ospf_vl_set_params): new router LSA is not
generated when the cost of the routing entry for the virtual
link endpoint has changed. If the cost to reach the virtual link's
endpoint has changed, add router LSA timer for the backbone area.
|
|
* Revert Cougar's sort interface names patch, causes problems with
enabling of interfaces for OSPF in ospfd.
|
|
|
|
Subject: [zebra 19263] Another memory leak!! is zebra OSPF
This memory leak gets into picture whenever any interface goes down.
Problem found and desctription: Whenever the interface goes down, the
"def_params" (member of ospf_if_info) structure memory is not freed.
Fix made: added the following line to free the "def_params" memory of
ospf_if_info before calling the "XFREE(MTYPE_OSPF_IF_INFO, ifp->info);"
The added line is:
ospf_del_if_params ((struct ospf_if_params *) IF_DEF_PARAMS (ifp));
|
|
Subject: [zebra 19262] Re: Memory leak in OSPF
Fix applied for Kamatchi's original report was to remove the auth_crypt
initialisation from the wrong function. This should fix that.
|
|
Subject: [zebra 19259] Memory leak in OSPF
The detail of the memory leak follows:
File name: ospf_interface.c
Function name: ospf_if_new_hook().
Type of leak: Overwriting the already allocated memory.
Problem found and description:
The ospf_new_if_params() fn allocates a memory for "auth_crypt" which
is overwritten, down in the fn (ospf_if_new_hook) by explicitely allocating
a memory for the same "auth_crypt".
Fix: remove allocation from ospf_new_if_params()
|
|
|
|
* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific
match for interface lookup.
|
|
Subject: [zebra 18767] possible SIGSEGV
Fix incorrect memset
|
|
* Sync to Zebra CVS
* Fix lib/thread.h leak
* Fix small Opaque LSA leak
* Do not configure OSPF interfaces for secondary addresses
* vtysh fixes from Hasso
* Dave Watson's missing ntohs fix
|
|
|
|
* sync to latest zebra CVS
* spec file: updated and added define for ospf-api/client
NB: OSPF-API has been broken by the zebra.org changes, which
has added struct ospf * as a new arg to many functions
|
|
may return an existing node. (if the code wants a /new/ node why not use
route_node_set? if it doesnt mind - then the assert is wrong).
this bug is in zebra.org CVS. (must be an extremely rare/unlikely bug
though).
|
|
[zebra 16681] OSPF NSSA Patches
|
|
|