Age | Commit message (Collapse) | Author |
|
This 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.
|
|
Apply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60
to rib_queue_add.
Also includes spelling fixes.
|
|
* kernel_socket.c: (rtm_flag_dump) Use a const message pointer to be
in sync with commit ce0db9cb11c0bc2e7f89a7d042e50afa495556b4.
|
|
* 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.
|
|
|
|
The 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.
|
|
* 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
|
|
* configure.ac: Bump to 0.99.15
|
|
* ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense
in non-host order..
|
|
* 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 *).
|
|
* prefix.c: (str2prefix_ipv6) inet_pton succesful return is presumed to be
1, rather than the "not zero" the man page describes - seemed fragile.
|
|
* testrib.conf: Example config file for testzebra
|
|
* test_main.c: If required arguments are missing, say that.
|
|
* if.c: (if_lookup_by_name) shouldn't crash just cause we got a NULL name
|
|
* ospf_ism.c (ospf_dr_eligible_routers) should test for priority > 0 instead
of != 0 as ospf_nbr_new () initially sets prio to -1
|
|
* 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.
|
|
* */*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_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.
|
|
* bgp_filter.h: Gcc complains the function prototype is not correct because
the function argument is using old K&R style.
|
|
Doing 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_maxage_exist) removed
(ospf_lsa_maxage_delete) maintain OSPF_LSA_MAXAGE flag
|
|
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 again with a few seconds apart.
* ospf_lsa.c: (ospf_{router,network}_lsa_install) avoid a needless scheduling
of SPF.
(ospf_lsa_different) fix bug in LSA comparison that would lead to the
described failure to schedule SPF.
|
|
* ospf_packet.c: make this message conditional on 'debug ospf event', as it
be easily triggered with, e.g., multiple subnets sharing same physical
network. E.g, see bug #532.
|
|
* bgpd.c: (peer_lookup_with_open) Bodged application of previous patch
meant the second loop around bgp->peer wasn't included in the loop
around bm->bgp as it was supposed to be. Fix..
|
|
* ospf_lsa.c: (link_info_set) Use %zd for size_t - C99 is old enough now.
Lots of similar warnings all over the code.
(ospf_lsa_translated_nssa_compare) Unused func - delete.
|
|
* ospf_{spf,lsa}.c: remove out of date comment; add comment on some
non-obvious code; Make note of a possible scaling problem.
|
|
* global: In struct ospf_path, change struct ospf_interface *oi to int
ifindex. It is unsafe to reference *oi as an ospf interface can be
deleted under your feet. Use a weak reference instead.
|
|
* ospf_spf.c: (ospf_get_next_link) One must check the vertex type, Router or
Network, to select type link to match against. Link type 1 has neighbour
router ID in link_id and link type 2 has IP address of DR. Since router
id may have same value as an existing IP address one risks matching a
router ID against a DR.
|
|
|
|
* bgp_attr.c: (bgp_mp_reach_parse) There are some interoperability issues
for MBGP (particularly IPv4 multicast NLRI) between different
implementations. In order to get some next hops to install correctly in
the BGP tables, it appears to be necessary to copy the multiprotocol next
hop into the base next hop field. This is related to differences in RFC
2283 and RFC 2858.
|
|
* HACKING: Update to reflect git stripping []'s, and to allow for more
discretion to avoid redundancy in commit messages.
|
|
This function will return the interface for the first matching
remote address for PtP i/f's. That won't work for multiple
unnumbered i/f's as these may all have the same address.
Pass in the struct interface pointer, ifp, to find the
correct set of oi's to search in. This also reduces the
size of the search list, making it faster.
* ospfd/ospf_interface.c: Add struct interface * param to
ospf_if_lookup_recv_if() to select the right list to search in.
* ospfd/ospf_interface.h: ditto.
* ospfd/ospf_packet.c: Pass new ifp argument to ospf_if_lookup_recv_if()
|
|
Makes it possible to run OSPF on multiple PtP interfaces
with the same remote address.
* ospfd/ospf_interface.c: Export ospf_if_table_lookup().
* ospfd/ospf_interface.h: ditto.
* ospfd/ospfd.c: (ospf_network_run_interface) Use ospf_if_table_lookup() to
determine whether OSPF is already configured for a subnet and interface.
|
|
|
|
* bgpd.c: (peer_lookup) Search through all BGP instances for matches, not just
the default instance, if no specific instance is given.
(peer_lookup_with_open) same.
|
|
* bgp_fsm.c: I have found an fd leak in bgpd that is caused by the 'new'
Clearing state. I've been seeing it from hold timer failures, but it can
also be triggered by other things.
When Hold_Timer_expired fires in Established state, a notify is sent and
BGP_Stop event queued. The fsm then transitions into Clearing state.
That is the problem; When the BGP_Stop event is serviced, the state table
says to ignore it while in Clearing. Thus bgp_stop is not called and the
fd leaks. Previously the peer would be in Idle state, which correctly
handles the BGP_Stop event.
Fix by making bgp_stop safe to call from Clearing state, without losing
ClearingCompleted events, and then ensuring it is called prior to
transition from Clearing->Idle.
|
|
* kernel_null.c: we're pretending to add an address, so
set IFC_REAL. If this isn't done, calling into the 'got address
from kernel' half of zebra will implicitly-withdraw the ifc, which
could cause a crash in test_zebra.c.
|
|
|
|
AS_CONFED_SEQUENCE segment should always be deleted when prepending
(e.g. with a route-map) an AS_SEQUENCE segment to an AS path. Otherwise,
AS_CONFED_SEQUENCE will not be deleted later when updating EBGP peers (since
it is not the leftmost segment) and will leak outside the confederation.
|
|
This patch implements BGP confederation error handling in Quagga as described
in RFC5065, paragraph 5.
* bgp_aspath.c: (aspath_confed_check, aspath_left_confed_check) new functions
* bgp_attr.c: (bgp_attr_aspath_check) apply previous and NOTIFY if there's
a problem.
|
|
*/*: ifp->flags is 64 bit unsigned which can not be handled by %l on 32
bit architectures - requires %ll and the appropriate cast.
|
|
Start BGP listener only after first instance is started. This helps the
security if BGP is not used but daemon is started. It also addresses some
issues like MD5 not working on listener unless IPV6 configured (because
listener was not in list); as well as compiler warnings.
* bgp_network.c: (bgp_listener) listen socket creation consolidated here
(bgp_socket) Use bgp_listener
* bgpd.c: (bgp_get) call bgp_socket on creation of first struct bgp.
(bgp_init) remove bgp_socket call.
* memtypes.c: Add MTYPE_BGP_LISTENER
|
|
bgpd.c: (various tables) only used in one place and are immutable.
|
|
* ripd.c: (rip_create_socket) RIP packets should go out with Type Of Service
(DSCP) set to Internet control (like OSPF and BGP).
|
|
* bgp_vty.c: (BGP_UPDATE_SOURCE_STR) Restore ability to accept arbitrary
interface names for the 'neighbor ... update-source' command - shouldn't
have been deleted.
(BGP_UPDATE_SOURCE_STR) Add help for same.
|
|
Move zserv socket creation code into zebra_zserv_socket_init() and
call it only after pidfile lock has been acquired exclusively. This
keeps subsequent zebra daemons from deleting the working socket of
an already running process (bug #403).
|
|
The man page for zebra(8) mentions as port number to connect to 2602,
but it's acutally 2601 (as shown in /etc/services). 2602 belongs to ripd.
Attached patch fixes this typo.
|
|
|
|
* bgp_route.c: (bgp_update_main) Nexthop reachability should be checked for
confederations too in case a prefix is received from more than one
confederation peers.
|
|
|
|
Currently, when accepting the connection, it can be left as zombie, when the
peer just initiates a connection, but never sends data (and the TCP
connection end packets are lost). This happens because for accepted
connections a temporary new peer entry is created until OPEN message is
exchanged, and this temporary peer entry does not get the hold time
parameter set at all.
* bgp_network.c: (bgp_accept) Set hold time and keepalive values for ACCEPT
peers.
|