lib: fix memory logging* lib/memory.h
* mtype_zcalloc(): correct function prototype
* XFREE(): make both definitions consistent in setting
the pointer to NULL after freeing the memory
These changes will only have an effect if MEMORY_LOG is defined
(it is not by default).
zebra: change router-id selection algoThe router-id table looks like is supposed to be sorted in current
quagga code, but the nodes are not added with the sorting
function.
The sorting function is host byte order dependent.
The values need to converted before comparison.
Fixing this causes Zebra to choose the largest IP address
as router-id, rather than the last address. This probably will
surprise some users. The other option wo...
lib: make some structures constant* isisd/isis_pdu.c
* maskbit: this pre-initialized array is not modified
* lib/prefix.c
* maskbit: idem
* lib/command.c
* facility_map: idem
* itoa64: idem
* default_motd: make local var static
* facility_name(): update local var accordingly
* facility_match(): idem
bgpd: code cleanup* bgpd/bgp_aspath.c
* ashash: only used in one file, make static
* aspath_count_numas(): dead code, sayonara
* bgpd/bgpd.c
* peer_nsf_stop(): only used in one file, make static
* bgpd/bgp_packet.h
* bgp_capability_receive(): add missing prototype for a
global function
ripd: fix compiler warnings* ripd/rip_interface.c
* rip_request_neighbor(): comment out, unused
* rip_request_neighbor_all(): idem
* rip_interface_up(): Cast flags otherwise compiler complains
about %lld not matching uint64_t on 64 bit x86. Print in hex
since flags are bit field.
* rip_interface_add(): idem
* rip_interface_delete(): idem
* ripd/rip_zebra.c
* rip_redistribute_set(): comment out, unused...
ospf6d: remove dead code* ospf6d/ospf6_interface.c
* loopind(): sayonara
* ospf6d/ospf6_top.c
* ospf6_delete(): comment out, it might be useful if real shutdown is
added
zebra: deal with irdp compile warnings* zebra/irdp.h
* irdp_send_thread(): move prototype to common header file
* irdp_advert_off(): idem
* process_solicit(): idem
* irdp_read_raw(): idem
* send_packet(): idem
* zebra/irdp_interface.c
* inet_2a(): move function to where it is used
* in_cksum(): lib/checksum.h already provides prototype
* irdp_send_thread(): prototype moved away
* inet_2a(): idem
* irdp_advert_of...
lib: move check_bit into prefix common codeMake one version of check prefix bit, and put it inline
with proper prototype. This gets rid of some macro's and also some
assert() that can never happen on a non-broken compiler.
* bgpd/bgp_table.c
* CHECK_BIT(): sayonara
* check_bit(): sayonara
* SET_LINK(): sayonara
* set_link(): make use of prefix_bit() instead of check_bit()
* bgp_node_match(): idem
* bgp_node_lookup(): idem
...
lib: fix warning on little endian* md5.c
* md5_calc(): If building on little endian then X
will be 'const uint32_t' which causes compiler
warning in code that never gets used. Just move
the endif to make sure code is not checked.
zebra: fix more warnings in rtadv* zebra/rtadv.c
* rtadv_free(): remove unused function
* rtadv_recv_packet(): break up cast/dereference to avoid
compiler type pun warning
* rtadv_read(): initialize ifindex, because compiler can't
figure out that it is okay
zebra: fix more compiler warnings* zebra/zebra_rib.c
* nexthop_active_update(): make local int vars unsigned
* nexthop_active_check(): return unsigned for consistency
* rib_dump(): cast time in printf format
* vrf_free(): remove unused function
* vrf_lookup_by_name(): idem
* rib_if_up(): idem
* rib_if_down(): idem
lib: make match functions take const args* table.c: general type safety and compiler help:
* maskbit[]: become const
* route_node_match(): take const args
* route_node_match_ipv4(): idem
* route_node_match_ipv6(): idem
* check_bit(): idem, plus adjust local vars typing
ospf6d: review LSA sequence number comparisonIt seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A
has sequence number smaller than 0x80000000 and LSA B has sequence
number larger than 0x80000000, ospf6_lsa_compare() returns that B is
more recent than A, although RFC says that sequence numbers should be
compared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest).
In ospfd, the function ospf_lsa_more_recent() ...
zebra: handle RTF_CLONING removal from FreeBSD 8.0The RTF_CLONING flag has been removed in FreeBSD 8.0 with arp-v2 (see
http://svn.freebsd.org/viewvc/base/stable/8/UPDATING?view=markup),
since it no longer has any meaning. This patch checks if RTF_CLONING
exists before using it.
isisd: fix BPF ioctl() calls, treat "true" and "false" as reservedAvoid a potential conflict with the C99 defines 'true' and 'false'
found in <stdbool.h> by choosing better variable names.
Also fix the calls to these ioctls, as described in <net/bpf.h>
in FreeBSD, NetBSD, and OpenBSD:
* BIOCGBLEN, BIOCIMMEDIATE, BIOCSSEESENT (the parameter should be
of type 'u_int')
* BIOCPROMISC (there should be no parameters)
ospfd: make local functions staticThis code is only used one place and can be made local.
Gcc is smart enough to inline local functions if it wants to.
The function also has a big chunk of compatiablity code that
is no longer used; since quagga is now in a version control system
the source does not need to be used as a historical reference.
zebra: fix RIB debug message for IPv6Apply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60
to rib_queue_add.
Also includes spelling fixes.
zebra: make declaration const in rtm_flag_dump()* kernel_socket.c: (rtm_flag_dump) Use a const message pointer to be
in sync with commit ce0db9cb11c0bc2e7f89a7d042e50afa495556b4.
ospf6d: fix LSA locking in ospf6_new_ls_id()* ospf6_lsdb.c: (ospf6_new_ls_id) Unlock the current LSA when breaking
out of the ospf6_lsdb_*_head() / ospf6_lsdb_*_next() loop early. No
explicit unlocking is needed when all LSAs are looped through
because ospf6_lsdb_*_next() manages everything in that case.
[ospfd] enable more OSPF cost command aliasesThe following syntax forms were not historically supported
by Quagga, although IOS accepted them w/o a problem:
no ip ospf cost <1-65535>
no ospf cost <1-65535>
no ip ospf cost <1-65535> A.B.C.D
no ospf cost <1-65535> A.B.C.D
From now on Quagga also supports these variants.
zebra: Fix router advertisements for non-Ethernet link layer addresses* rtadv.c: round up when calculating the link-layer address option length;
add padding to the option if needed to end on an octet boundary
ospf6d: bug #529, fix endianness problem in earlier commit * ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense
in non-host order..
bgpd: fix md5 set on listen sockets* bgp_network.c: (bgp_md5_set) Missing piece from earlier listener change
did not get ported from Vyatta code into upstream. The list
listener_sockets changed from (int *) to (struct bgp_listener *).
lib/trivial: str2prefix checks return of inet_pton in fragile way* prefix.c: (str2prefix_ipv6) inet_pton succesful return is presumed to be
1, rather than the "not zero" the man page describes - seemed fragile.
ospfd: Make sure priority is respected.* ospf_ism.c (ospf_dr_eligible_routers) should test for priority > 0 instead
of != 0 as ospf_nbr_new () initially sets prio to -1
ospfd: Tighten up the connected check for redistribution* ospf_zebra.c: (ospf_distribute_check_connected) check to make filter out
routes matching connected routes was matching against OSPF networks, which
can be far more general than the actual connected interfaces. Fix.
all: check return value from daemon() call* */*main.c: (main) Current versions of Gcc warn if the return value for
daemon() is not checked. So add a simple test and exit on failure.
bgp: missing pieces from listener patch* bgp_network.c: (bgp_accept) The code in current git will crash as part of
the revised listener code is missing. The new listener thread code passes
a pointer to a bgp_listener structure, not the bgp pointer. The old code
always got a NULL for bgp pointer, so that is now hard coded.
ospfd: fix performance problem with redistribute deleteDoing redistribute delete with full BGP table was taking
30 minutes, this drops it down to less than a second.
* ospf_lsa.c: (ospf_lsa_maxage) When flushing lots of entries the
performance is terrible because it looks up each LSA entry through
ospf_lsa_maxage_exist before deleting causing O(N^2) performance. Use a
new OSPF_LSA_MAXAGE flag instead of scan - and maintain it.
(ospf_lsa_m...
ospfd: Make sure route table is recalculated.In some cases ospfd does not recalc the route table. This
happens when ospfd receives an old LSA which will trigger
recalc but the this recalc will fail because all interfaces
isn't up yet. Next LSA that is originated matches the old one
so no recalc will be performed. This problem has been observed
when there are only 2 ppp I/Fs in an area, both go down at the
same time, then they come up agai...