summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* zebra: make declaration const in rtm_flag_dump()Tom Goff2009-12-031-1/+1
| | | | | * 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()Tom Goff2009-12-011-0/+3
| | | | | | | * 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.
* configure: fix HAVE_CLOCK_MONOTONIC spellingDmitry Tejblum2009-11-051-1/+1
|
* [ospfd] enable more OSPF cost command aliasesDenis Ovsienko2009-09-281-0/+88
| | | | | | | | | | | | 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.
* zebra: Fix router advertisements for non-Ethernet link layer addressesDavid Ward2009-09-011-2/+16
| | | | | * 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
* release: 0.99.15quagga_0_99_15_releasePaul Jakma2009-08-281-1/+1
| | | | * configure.ac: Bump to 0.99.15
* ospf6d: bug #529, fix endianness problem in earlier commit Tom Henderson2009-08-281-7/+4
| | | | | | * ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense in non-host order..
* bgpd: fix md5 set on listen socketsStephen Hemminger2009-08-281-9/+10
| | | | | | * 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 wayPaul Jakma2009-08-281-2/+2
| | | | | * prefix.c: (str2prefix_ipv6) inet_pton succesful return is presumed to be 1, rather than the "not zero" the man page describes - seemed fragile.
* zebra: Add an example config file for testzebraPaul Jakma2009-08-281-0/+56
| | | | * testrib.conf: Example config file for testzebra
* zebra: test_main.c should be a bit more helpful about its usagePaul Jakma2009-08-281-1/+5
| | | | * test_main.c: If required arguments are missing, say that.
* lib: if_lookup_by_name should be more robust to null argumentPaul Jakma2009-08-281-7/+9
| | | | * if.c: (if_lookup_by_name) shouldn't crash just cause we got a NULL name
* ospfd: Make sure priority is respected.Joakim Tjernlund2009-08-281-1/+1
| | | | | * 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 redistributionJoakim Tjernlund2009-08-281-8/+5
| | | | | | * 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() callStephen Hemminger2009-08-139-17/+45
| | | | | | * */*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 patchStephen Hemminger2009-08-131-10/+5
| | | | | | | * 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: compiler warning fixStephen Hemminger2009-08-131-2/+2
| | | | | * bgp_filter.h: Gcc complains the function prototype is not correct because the function argument is using old K&R style.
* ospfd: fix performance problem with redistribute deleteStephen Hemminger2009-08-132-14/+4
| | | | | | | | | | | | 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
* ospfd: Make sure route table is recalculated.Joakim Tjernlund2009-08-111-18/+23
| | | | | | | | | | | | | | | 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.
* ospfd: Make "Packet ... received on wrong link" conditional on debugPaul Jakma2009-08-111-2/+3
| | | | | | * 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: Fix mistakes in applying 'allow inbound connections to non-default view'Paul Jakma2009-08-051-26/+28
| | | | | | * 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..
* ospfd: neuter some compiler warningsPaul Jakma2009-08-031-38/+1
| | | | | | * 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.
* ospfd: update some commentsPaul Jakma2009-08-032-7/+17
| | | | | * ospf_{spf,lsa}.c: remove out of date comment; add comment on some non-obvious code; Make note of a possible scaling problem.
* ospfd: Change struct ospf_path *oi to ifindex.Joakim Tjernlund2009-08-037-31/+34
| | | | | | * 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.
* ospfd: Discriminate better when selecting links between vertices in SPFJoakim Tjernlund2009-07-301-7/+5
| | | | | | | | * 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.
* [bgpd] delete erroneous extra brace..Paul Jakma2009-07-301-1/+0
|
* bgpd: Workaround for invalid MBGP next hopMichael Lambert2009-07-301-0/+3
| | | | | | | | | * 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.
* [doc] Update HACKINGPaul Jakma2009-07-301-14/+24
| | | | | * HACKING: Update to reflect git stripping []'s, and to allow for more discretion to avoid redundancy in commit messages.
* ospfd: Make ospf_if_lookup_recv_if() find the right unnumbered i/fJoakim Tjernlund2009-07-283-8/+15
| | | | | | | | | | | | | | | 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()
* ospfd: export ospf_if_table_lookup() and use it in ospf_network_run_interface()Joakim Tjernlund2009-07-283-6/+5
| | | | | | | | | | | 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/trivial: Fix indentation in previousPaul Jakma2009-07-282-35/+28
|
* bgpd: Allow inbound connections to non-default viewSteve Hill2009-07-281-7/+22
| | | | | | * 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.
* bgpd: fd leak in bgpdSteve Hill2009-07-281-15/+33
| | | | | | | | | | | | | | | | | * 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.
* [zebra] Fix crash in test_zebraPaul Jakma2009-07-281-0/+1
| | | | | | | * 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.
* Merge remote branch 'origin/master'Paul Jakma2009-07-283-7/+15
|\
| * [zebra] do not touch socket before pidfile lockingDenis Ovsienko2009-07-243-7/+15
| | | | | | | | | | | | | | 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).
* | bgpd: Delete AS_CONFED_SEQUENCE when prepending an AS_SEQUENCE type segmentVasilis Tsiligiannis2009-07-281-0/+4
| | | | | | | | | | | | | | 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.
* | bgpd: Implement BGP confederation error handling (RFC5065, Par. 5)Vasilis Tsiligiannis2009-07-283-0/+49
| | | | | | | | | | | | | | | | | | 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.
* | [global] interface flags format warningsStephen Hemminger2009-07-284-15/+19
| | | | | | | | | | */*: ifp->flags is 64 bit unsigned which can not be handled by %l on 32 bit architectures - requires %ll and the appropriate cast.
* | bgpd: start listener on first instanceStephen Hemminger2009-07-284-94/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | 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: peer action table static/constStephen Hemminger2009-07-281-4/+4
| | | | | | | | bgpd.c: (various tables) only used in one place and are immutable.
* | ripd: set IP TOS for control socketStephen Hemminger2009-07-271-0/+3
| | | | | | | | | | * ripd.c: (rip_create_socket) RIP packets should go out with Type Of Service (DSCP) set to Internet control (like OSPF and BGP).
* | [bgpd] Restore ability of 'neighbor ... update-source' to take interface namePaul Jakma2009-07-271-2/+3
|/ | | | | | | * 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.
* [doc] zebra.8 via Christian Hammers (#531)Thijs Kinkhorst2009-07-211-1/+1
| | | | | | 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.
* [build] Bump release to 0.99.14quagga_0_99_14_releasePaul Jakma2009-07-211-1/+1
|
* [bgp] Fix nexthop reachability check on confederationsVasilis Tsiligiannis2009-07-211-0/+2
| | | | | | * 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.
* [bgpd] fix typo made by paul in previous commitPaul Jakma2009-07-211-2/+2
|
* [bgpd] Avoid zombie accepted peer entriesTimo Teräs2009-07-211-0/+2
| | | | | | | | | | | | 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.
* [bgpd] Small buffer overrun in bgp_clear_node_queue_initNick Hilliard2009-07-211-2/+1
| | | | | * bgp_route.c: (bgp_clear_node_queue_init) fix buffer overrun.
* [zebra] Silence noisy process_subqChris Caputo2009-07-211-0/+2
| | | | zebra_rib.c: process_subq(): #ifdef out debug code.