summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | ospf6d: fix compile warning from falling off end of mainStephen Hemminger2011-12-071-1/+1
| | | | | | | | | | | | | | | | | | | | ospf6 main always calls ospf6_exit() which always calls exit. Use attributes to tell GCC that this is ok.
| * | | zebra: fix warnings in forward procStephen Hemminger2011-12-071-5/+4
| | | | | | | | | | | | | | | | | | | | Check result of fgets(), and don't set variable that is never used.
| * | | bgpd: cleanup privs on terminationStephen Hemminger2011-12-071-0/+1
| | | | | | | | | | | | | | | | | | | | When doing valgrind testing, the privledges from zprivs_init() need to be cleaned up on exit.
| * | | vty_serv_sock_family unusedStephen Hemminger2011-12-071-1/+2
| | | | | | | | | | | | | | | | | | | | If the vty_serv_sock_addrinfo is being used, then vty_serv_sock_family is unsed. Fix by adjusting ifdef/else/endif
| * | | ospfd: remove unused codeStephen Hemminger2011-12-075-101/+6
| | | | | | | | | | | | | | | | | | | | The code for nssa_range and other bits that were written but never used.
| * | | bgpd: store nexthop info for redistributed IPV6 routesStephen Hemminger2011-12-063-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | BGP was ignoring nexthop info for static and other redistributed routes for IPv6. Build extra attribute info to store the nexthop. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=6073
| * | | ospfd: avoid redundant lookup in ospf_redistribute_withdrawStephen Hemminger2011-12-061-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old algorithim looked up every node twice as it withdrew the entry. It looks up entry once in redistribute_withdraw, then looks it up again info_delete. Use result of first lookup to do the free directly. This may explain the slow performance observed in https://bugzilla.vyatta.com/show_bug.cgi?id=4421
| * | | lib: fix memory leak on connect() failureStephen Hemminger2011-12-061-12/+11
| | | | | | | | | | | | | | | | | | | | Change sockunion_log() to not use strdup(). This fixes a small memory leak that occurs on every failed connect(), and is simpler/cleaner.
| * | | lib: call filter delete hook before freeing access listStephen Hemminger2011-12-061-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The delete_hook was being run after calling access list delete function. This would cause ospf to dereference a NULL, in ospf_filter_update because 'access->name' was already freed. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=7654
| * | | bgpd: fix memory leak for extra attributesOleg A. Arkhangelsky2011-12-031-0/+1
| | | | | | | | | | | | | | | | this fixes commit b881c7074bb698aeb1b099175b325734fc6e44d2
| * | | doc: rectify "match ip next-hop" in ripd (BZ#537)Roderick Schertler2011-11-221-4/+4
| | | |
| * | | bgpd: remove unused function bgp_bind_addressDavid Lamparter2011-11-211-26/+0
| | | | | | | | | | | | | | | | bgp_bind_address is replaced with sockunion_bind.
| * | | bgpd: fix update-source for IPv6 (BZ#548)David Lamparter2011-11-211-12/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if update-source was given as interface name, bgpd was unconditionally trying to bind to an IPv4 address from that interface. change function to find the best-matching (number of address bits) same-family address on the interface.
| * | | lib: prefix2sockunion, prefix_common_bits helper functionsDavid Lamparter2011-11-212-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | prefix2sockunion converts a struct prefix* to a union sockunion *; prefix_common_bits counts the number of common bits in the prefix's address part.
| * | | ospf6d: check MTU with message header size in mindDmitrij Tejblum2011-11-171-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ospf6_message.c: (ospf6_packet_max): new function, return maximum IPv6 payload on an interface; (ospf6_hello_send, ospf6_dbdesc_send, ospf6_dbdesc_send_newone, ospf6_lsreq_send, ospf6_lsupdate_send_neighbor, ospf6_lsupdate_send_interface, ospf6_lsack_send_neighbor, ospf6_lsack_send_interface): compare message size with the maximum payload instead of the MTU.
| * | | bgpd: fix "nexthop-local unchanged" (BZ#350)Dylan Hall2011-11-151-0/+5
| | | |
| * | | bgpd: justify capabilities for TOS settingChris Luke2011-11-152-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To set the TOS bits on TCP connections, platforms that restrict capabilities need the priv level to be raised before the sockopt is set, and this requires the ZCAP_NET_ADMIN priv. * bgp_main.c: update _caps_p to include ZCAP_NET_ADMIN * bgp_network.c * bgp_connect(): request ZPRIVS_RAISE/ZPRIVS_LOWER * bgp_listener(): request ZPRIVS_RAISE earlier
| * | | ospfd: improve fix to CVE-2011-3326 (BZ#586)Thomas Ries2011-11-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Make ospf_flood() propagate error returned by ospf_lsa_install() further to properly discard the malformed LSA, not just prevent the immediate crash.
| * | | bgpd: revised fix to --dryrun (BZ#622)Sergey Y. Afonin2011-11-151-3/+4
| | | |
| * | | bgpd: fix 2 more cases of length error reportingDenis Ovsienko2011-10-261-2/+2
| | | | | | | | | | | | | | | | | | | | * bgp_attr.c (bgp_attr_originator_id, bgp_attr_cluster_list): provide required arguments to bgp_attr_malformed()
| * | | bgpd: check AGGREGATOR attr flags (BZ#678)Denis Ovsienko2011-10-221-0/+17
| | | | | | | | | | | | | | | | | | | | * bgp_attr.c * bgp_attr_aggregator(): check Optional/Transitive flag bits
| * | | bgpd: fix more regressions in attr flag checksDenis Ovsienko2011-10-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 05a4936b713b9882171d0f7fb20b8439df23939e fixed some of the attributes involved, but not all. This commit should do it. * bgp_attr.c * bgp_attr_originator_id() * bgp_attr_cluster_list() * bgp_mp_reach_parse() * bgp_mp_unreach_parse()
| * | | bgpd: use bgp_attr_malformed()Denis Ovsienko2011-10-181-17/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the recent attribute flags/length checks copied from QRE use bgp_notify_send_with_data() directly, but master branch assumes using bgp_attr_malformed(). * bgp_attr.c * bgp_attr_med() * bgp_attr_local_pref() * bgp_attr_atomic() * bgp_attr_originator_id() * bgp_attr_cluster_list() * bgp_mp_reach_parse() * bgp_mp_unreach_parse()
| * | | bgpd: add flag checks for MP_(UN)REACH_NLRIDenis Ovsienko2011-10-173-11/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgp_attr.[ch] * bgp_mp_reach_parse(): add extra arguments and a uniform flag check block * bgp_mp_unreach_parse(): idem * bgp_attr_parse(): provide extra arguments * bgp_mp_attr_test.c * parse_test(): justify respective calls
| * | | bgpd: fix spelling of CLUSTER_LISTDenis Ovsienko2011-10-171-1/+1
| | | |
| * | | bgpd: check CLUSTER_LIST attribute flagsDenis Ovsienko2011-10-171-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgp_attr.c * bgp_attr_cluster_list(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments
| * | | bgpd: check ORIGINATOR_ID attribute flagsDenis Ovsienko2011-10-171-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgp_attr.c * bgp_attr_originator_id(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments
| * | | vtysh: [build] silence preprocessor errors in some casesDmitrij Tejblum2011-10-171-1/+1
| | | | | | | | | | | | | | | | * extract.pl.in: use configured CPPFLAGS in cpp invocation.
| * | | lib: compile even without IPV6_TCLASSDenis Ovsienko2011-10-171-1/+3
| | | |
| * | | IPv6 transport class suppportStephen Hemminger2011-10-175-1/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IPv6 supports the same concept of differentiated service for routing protocols as IPv4, but like too many things, the standards committee decided that having two names for the same thing wasn't good enough and introduced a third more generic term transport class. The socket option to set transport class works the same as IPv4, but the arguments are different. * lib/sockopt.[ch] * setsockopt_ipv6_tclass(): new function * bgpd/bgp_network.c * bgp_connect(): set socket option * bgp_listener(): set socket option * ospf6d/ospf6_network.c * ospf6_set_transport_class(): new function * ospf6_serv_sock(): set socket option * ripngd/ripngd.c * ripng_make_socket(): set socket option
| * | | bgpd: fix regression in improved attr flag checksDenis Ovsienko2011-10-121-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 2febf323411c1aed9d7694898f852ce2ef36a7e5 assumed every flag bit except optional/transitive/partial unset, which at times could not be true for "extended length" bit. * bgp_attr.c * bgp_attr_origin(): exclude BGP_ATTR_FLAG_EXTLEN from comparison * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem
| * | | bgpd: fix parsing of graceful restart cap. (#663)Peter Pentchev2011-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "While setting up a testbed, I ran across a little problem in the parsing of the "graceful restart" BGP capability that resulted in Quagga not actually activating it for the peer in question - when the peer sent a single AFI/SAFI block." * bgp_open.c * bgp_capability_restart(): actually process the last AFI/SAFI block
| * | | bgpd: improve attr length error handling (BZ#679)Denis Ovsienko2011-10-081-12/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgp_attr.c * bgp_attr_parse(): provide extra argument to bgp_attr_aggregator() * bgp_attr_local_pref(): use bgp_notify_send_with_data() * bgp_attr_atomic(): idem * bgp_attr_aggregator(): idem Conflicts: bgpd/bgp_attr.c
| * | | bgpd: improve attr flags checksDenis Ovsienko2011-09-301-138/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not check each of the Optional/Transitive/Partial attribute flag bits, when their only valid combination is known in advance, but still perform bit-deep error message logging. This change assumes unused (low-order) 4 bits of the flag octet cleared. * bgp_attr.c * bgp_attr_origin(): rewrite check * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem Conflicts: bgpd/bgp_attr.c
| * | | bgpd: ignore 4 bits of attribute flags byteDenis Ovsienko2011-09-301-1/+4
| | | |
| * | | bgpd: add missing "partial" flag checks (BZ#676)Denis Ovsienko2011-09-301-3/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ORIGIN handling function used to have "partial" bit check and recent commits added it for NEXT_HOP, MULTI_EXIT_DISC and ATOMIC_AGGREGATE cases. This commit adds "partial" check for AS_PATH and LOCAL_PREF cases, which should leave attributes 1 through 6 inclusive completely covered with attribute flags checks. * bgp_attr.c * bgp_attr_origin(): use bit-by-bit checks for better diagnostics * bgp_attr_aspath(): add flag check * bgp_attr_local_pref(): idem Conflicts: bgpd/bgp_attr.c
| * | | bgpd: improve NEXT_HOP attribute checks (BZ#680)Denis Ovsienko2011-09-302-6/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib/prefix.h * IPV4_CLASS_DE(): new helper macro * bgp_attr.c * bgp_attr_nexthop(): add check for "partial" bit, refresh flag error reporting, explain meaning of RFC4271 section 6.3 and implement it Conflicts: bgpd/bgp_attr.c
| * | | bgpd: rename SAFI 3 according to RFC4760Denis Ovsienko2011-09-294-9/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - SAFI value 3 is reserved. It was assigned by RFC 2858 for a use that was never fully implemented, so it is deprecated by this document. * zebra.h: rename macro * bgp_fsm.c: (bgp_graceful_restart_timer_expire, bgp_graceful_stale_timer_expire, bgp_stop, bgp_establish): update * bgpd.c: (peer_nsf_stop): update * bgp_open.c: (bgp_capability_vty_out): SAFI 3 isn't a recognized case any more
| * | | bgpd: more SAFI fixesDenis Ovsienko2011-09-297-60/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (with resolved conflict in bgpd/bgp_packet.c) Two macros resolving to the same integer constant broke a case block and a more thorough merge of BGP_SAFI_VPNV4 and BGP_SAFI_VPNV6 was performed. * bgpd.h: MPLS-labeled VPN SAFI is AFI-independent, switch to single * macro * bgp_capability_test.c: update test data * bgp_mp_attr_test.c: idem * bgp_route.c: (bgp_maximum_prefix_overflow, bgp_table_stats_vty) update macro and check conditions (where appropriate) * bgp_packet.c: (bgp_route_refresh_send, bgp_capability_send, bgp_update_receive, bgp_route_refresh_receive): idem * bgp_open.c: (bgp_capability_vty_out, bgp_afi_safi_valid_indices, bgp_open_capability_orf, bgp_open_capability): idem * bgp_attr.c: (bgp_mp_reach_parse, bgp_packet_attribute, bgp_packet_withdraw): idem
| * | | bgpd: fix SAFI for for MPLS labeled VPN-IPv6Denis Ovsienko2011-09-292-2/+2
| | |/ | |/| | | | | | | | | | * bgpd.h: change value of BGP_SAFI_VPNV6 to 128 (RFC4659, BZ#659) * bgp_route.c: (bgp_table_stats_vty) fix length argument to strncmp()
| * | release: 0.99.20quagga_0_99_20_releaseDenis Ovsienko2011-09-291-1/+1
| | |
| * | ospfd: fix regression in recent commitYAMAMOTO Shigeru2011-09-291-10/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | commit '717750433839762d23a5f8d88fe0b4d57c8d490a' causes SEGV error, when 'oi = ospf_if_lookup_recv_if (ospf, iph->ip_src, ifp);' returns NULL. * ospf_packet.c * ospf_read(): change a place of calling 'ospf_verify_header()'
| * | ospfd: remove unused macroDenis Ovsienko2011-09-271-4/+0
| | |
| * | bgpd: don't be confused by "unspecific" subcode in the NOTIFY message.Dmitrij Tejblum2011-09-272-1/+7
| | | | | | | | | | | | | | | | | | * bgp_debug.c (bgp_notify_open_msg, bgp_notify_update_msg, bgp_notify_cease_msg, bgp_notify_capability_msg): add messages for "unspecific" subcode.
| * | lib: provide more information in case of failed LOOKUP.Dmitrij Tejblum2011-09-272-6/+7
| | | | | | | | | | | | | | | | | | | | | * log.[ch] * mes_lookup: add a parameter with the name of the message list, print the name in case of failure. * LOOKUP macro: pass the name of the message list.
| * | configure: test for glibc backtrace even without glibc.Dmitrij Tejblum2011-09-271-8/+6
| | | | | | | | | | | | Other platform may have compatible facilities.
| * | ospfd: spellingDenis Ovsienko2011-09-271-1/+1
| | |
| * | bgpd: spellingDenis Ovsienko2011-09-271-1/+1
| | |
| * | bgpd: spellingDenis Ovsienko2011-09-271-1/+1
| | |
| * | ospfd: use existing macro for consistencyDenis Ovsienko2011-09-271-2/+2
| | |