| 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. |