]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
12 years agoospf6d: CVE-2011-3323 (fortify packet reception)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:51 +0000 (13:18 +0400)]
ospf6d: CVE-2011-3323 (fortify packet reception)

This vulnerability (CERT-FI #514840) was reported by CROSS project.

ospf6d processes IPv6 prefix structures in incoming packets without
verifying that the declared prefix length is valid. This leads to a
crash
caused by out of bounds memory access.

* ospf6_abr.h: new macros for size/alignment validation
* ospf6_asbr.h: idem
* ospf6_intra.h: idem
* ospf6_lsa.h: idem
* ospf6_message.h: idem
* ospf6_proto.h: idem
* ospf6_message.c
  * ospf6_packet_minlen: helper array for ospf6_packet_examin()
  * ospf6_lsa_minlen: helper array for ospf6_lsa_examin()
  * ospf6_hello_recv(): do not call ospf6_header_examin(), let upper
    layer verify the input data
  * ospf6_dbdesc_recv(): idem
  * ospf6_lsreq_recv(): idem
  * ospf6_lsupdate_recv(): idem
  * ospf6_lsack_recv(): idem
  * ospf6_prefixes_examin(): new function, implements A.4.1
  * ospf6_lsa_examin(): new function, implements A.4
  * ospf6_lsaseq_examin(): new function, an interface to above
  * ospf6_packet_examin(): new function, implements A.3
  * ospf6_rxpacket_examin(): new function, replaces
    ospf6_header_examin()
  * ospf6_header_examin(): sayonara
  * ospf6_receive(): perform passive interface check earliest possible,
    employ ospf6_rxpacket_examin()

12 years agoospf6d: CVE-2011-3324 (DD LSA assertion)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:36 +0000 (13:18 +0400)]
ospf6d: CVE-2011-3324 (DD LSA assertion)

This vulnerability (CERT-FI #514839) was reported by CROSS project.

When Database Description LSA header list contains trailing zero octets,
ospf6d tries to process this data as an LSA header. This triggers an
assertion in the code and ospf6d shuts down.

* ospf6_lsa.c
  * ospf6_lsa_is_changed(): handle header-only argument(s)
    appropriately, do not treat LSA length underrun as a fatal error.

12 years agoospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:02 +0000 (13:18 +0400)]
ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)

This vulnerability (CERT-FI #514838) was reported by CROSS project.

The error is reproducible only when ospfd debugging is enabled:
  * debug ospf packet all
  * debug ospf zebra
When incoming packet header type field is set to 0x0a, ospfd will crash.

* ospf_packet.c
  * ospf_verify_header(): add type field check
  * ospf_read(): perform input checks early

12 years agoospfd: CVE-2011-3325 part 1 (OSPF header underrun)
Denis Ovsienko [Mon, 26 Sep 2011 09:17:52 +0000 (13:17 +0400)]
ospfd: CVE-2011-3325 part 1 (OSPF header underrun)

This vulnerability (CERT-FI #514838) was reported by CROSS project.

When only 14 first bytes of a Hello packet is delivered, ospfd crashes.

* ospf_packet.c
  * ospf_read(): add size check

12 years agoospfd: CVE-2011-3326 (uknown LSA type segfault)
CROSS [Mon, 26 Sep 2011 09:17:21 +0000 (13:17 +0400)]
ospfd: CVE-2011-3326 (uknown LSA type segfault)

This vulnerability (CERT-FI #514837) was reported by CROSS project.
They have also suggested a fix to the problem, which was found
acceptable.

Quagga ospfd does not seem to handle unknown LSA types in a Link State
Update message correctly. If LSA type is something else than one
supported
by Quagga, the default handling of unknown types leads to an error.

* ospf_flood.c
  * ospf_flood(): check return value of ospf_lsa_install()

12 years agobgpd: CVE-2011-3327 (ext. comm. buffer overflow)
CROSS [Mon, 26 Sep 2011 09:17:05 +0000 (13:17 +0400)]
bgpd: CVE-2011-3327 (ext. comm. buffer overflow)

This vulnerability (CERT-FI #513254) was reported by CROSS project.
They have also suggested a fix to the problem, which was found
acceptable.

The problem occurs when bgpd receives an UPDATE message containing
255 unknown AS_PATH attributes in Path Attribute Extended Communities.
This causes a buffer overlow in bgpd.

* bgp_ecommunity.c
  * ecommunity_ecom2str(): perform size check earlier

13 years agobgpd: improve NEXT_HOP attribute checks (BZ#680)
Denis Ovsienko [Thu, 22 Sep 2011 08:48:14 +0000 (12:48 +0400)]
bgpd: improve NEXT_HOP attribute checks (BZ#680)

* 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

13 years agobgpd: don't be confused by "unspecific" subcode in the NOTIFY message.
Dmitrij Tejblum [Wed, 21 Sep 2011 19:13:22 +0000 (23:13 +0400)]
bgpd: don't be confused by "unspecific" subcode in the NOTIFY message.

* bgp_debug.c (bgp_notify_open_msg, bgp_notify_update_msg,
  bgp_notify_cease_msg, bgp_notify_capability_msg): add messages for
  "unspecific" subcode.

13 years agolib: provide more information in case of failed LOOKUP.
Dmitrij Tejblum [Wed, 21 Sep 2011 13:41:41 +0000 (17:41 +0400)]
lib: provide more information in case of failed LOOKUP.

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

13 years agobgpd: check ATOMIC_AGGREGATE attr flags (BZ#678)
Denis Ovsienko [Tue, 20 Sep 2011 10:43:50 +0000 (14:43 +0400)]
bgpd: check ATOMIC_AGGREGATE attr flags (BZ#678)

* bgp_attr.c
  * bgp_attr_atomic(): accept extra argument, add checks for
    "optional", "transitive" and "partial" bits, log each error
    condition independently
  * bgp_attr_parse(): provide extra argument

13 years agobgpd: check MULTI_EXIT_DISC attr flags (BZ#677)
Denis Ovsienko [Tue, 20 Sep 2011 06:54:25 +0000 (10:54 +0400)]
bgpd: check MULTI_EXIT_DISC attr flags (BZ#677)

* bgp_attr.c
  * bgp_attr_med(): add checks for "optional", "transitive" and
    "partial" bits, log each error condition independently

13 years agobgpd: check LOCAL_PREF attribute flags (BZ#674)
Denis Ovsienko [Mon, 19 Sep 2011 12:30:47 +0000 (16:30 +0400)]
bgpd: check LOCAL_PREF attribute flags (BZ#674)

* bgp_attr.c
  * bgp_attr_local_pref(): accept extra argument, add checks for
    "optional" and "transitive" bits, log each error condition
    independently
  * bgp_attr_parse(): provide extra argument

13 years agoconfigure: test for glibc backtrace even without glibc.
Dmitrij Tejblum [Thu, 15 Sep 2011 16:00:33 +0000 (20:00 +0400)]
configure: test for glibc backtrace even without glibc.

Other platform may have compatible facilities.

13 years agoospfd: remove unused macro
Denis Ovsienko [Thu, 15 Sep 2011 11:40:47 +0000 (15:40 +0400)]
ospfd: remove unused macro

13 years agodoc: fix typo
Roman Hoog Antink [Thu, 15 Sep 2011 07:47:00 +0000 (11:47 +0400)]
doc: fix typo

13 years agoisisd: raise hello rate for DIS (BZ#539)
Fritz Reichmann [Wed, 14 Sep 2011 16:46:57 +0000 (20:46 +0400)]
isisd: raise hello rate for DIS (BZ#539)

* isis_pdu.c: Divide hello interval by three, depending if we are DIS or
  not.

13 years agoisisd: fix crash on "no router isis" (BZ#536)
Fritz Reichmann [Wed, 14 Sep 2011 15:31:51 +0000 (19:31 +0400)]
isisd: fix crash on "no router isis" (BZ#536)

The crash is due to threads accessing data that gets destroyed
during the removal of the configuration.

* isis_circuit.c: Destroy adjacencies to stop adjacency expiry thread.
  Stop PSNP threads.
* isisd.c: Change state of circuit back to INIT and reassign the
  circuit structure to isis->init_circ_list rather than destroying
  the circuit data structure. Stop SPF threads. Stop LSP generation
  threads.
* isisd.h: Add pointers to LSP threads into area structure in order to
  stop them in isisd.c
* isis_lsp.c: Store pointer to LSP thread in area structure.
* isis_pdu.c: Stop PDU generation for a circuit with a removed area.
* isis_pfpacket.c: Stop processing received PDUs for a circuit with a
  removed area.

13 years agoospf6d: Fix memory allocation issues in SPF
Tom Goff [Wed, 10 Nov 2010 21:02:38 +0000 (13:02 -0800)]
ospf6d: Fix memory allocation issues in SPF

* ospf6_area.c: Call ospf6_spf_table_finish() before deleting the spf
    table.  This ensures that the associated ospf6_vertex structures
    are also freed.
* ospf6_spf.c: Only allocate a priority queue when a spf calculation
    is actually performed.

13 years agoospf6d: Extend the "[no] debug ospf6 route" vty commands
Tom Goff [Wed, 10 Nov 2010 21:02:11 +0000 (13:02 -0800)]
ospf6d: Extend the "[no] debug ospf6 route" vty commands

* ospf6_route.c ([no_]debug_ospf6_route) Include memory as a debug
  option.  This allows ospf6 route memory debugging to be enabled or
  disabled interactively or from a config file.

13 years agoisisd: include hash.h, not hash.c
Peter Szilagyi [Tue, 13 Sep 2011 13:37:06 +0000 (17:37 +0400)]
isisd: include hash.h, not hash.c

13 years agoconfigure: dismiss libutil.h
Stephen Hemminger [Tue, 13 Sep 2011 13:15:51 +0000 (17:15 +0400)]
configure: dismiss libutil.h

Recent versions of libc on Linux (Debian Testing) create lots of
compile warnings about direct usage of libutil.h

13 years agodoc: add missing word
Alexandre Chappuis [Tue, 13 Sep 2011 12:33:45 +0000 (16:33 +0400)]
doc: add missing word

* ospfd.texi: Adjust meaning of the rfc1583compatibility option in
  order to match the RFC specification and the actual source code.

13 years agoospf6d: add lost lines to area config block
Jon Andersson [Tue, 13 Sep 2011 11:47:14 +0000 (15:47 +0400)]
ospf6d: add lost lines to area config block

* ospf6_area.c
  * ospf6_area_config_write(): write filter-list, import-list and
    export-list lines

13 years agobgpd: fix parsing of graceful restart cap. (#663)
Peter Pentchev [Mon, 12 Sep 2011 12:30:31 +0000 (16:30 +0400)]
bgpd: fix parsing of graceful restart cap. (#663)

"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

13 years agoospf6d: fix crash on filter-list handling (BZ#530)
Christian Hammers [Mon, 12 Sep 2011 10:23:05 +0000 (14:23 +0400)]
ospf6d: fix crash on filter-list handling (BZ#530)

This essentially merges the fix available from Debian build of Quagga.

* ospf6_area.c
  * area_filter_list(): use correct argv indices
  * no_area_filter_list(): idem

13 years agobgpd: add useful notification logs (BZ#616)
heasley [Mon, 12 Sep 2011 09:27:52 +0000 (13:27 +0400)]
bgpd: add useful notification logs (BZ#616)

* bgp_packet.c
  * bgp_notify_send_with_data(): add calls to zlog_info()

13 years agodoc: BGP route-flap dampening
Alexandre Chappuis [Sun, 11 Sep 2011 12:54:11 +0000 (16:54 +0400)]
doc: BGP route-flap dampening

13 years agozebra: fix loss of metric for Linux routes
Dmitry Popov [Sun, 11 Sep 2011 09:48:25 +0000 (13:48 +0400)]
zebra: fix loss of metric for Linux routes

* rt_netlink.c
  * netlink_route_change(): fetch metric information like
    netlink_routing_table() does and pass it further

13 years agoospfd: spelling
Denis Ovsienko [Sat, 10 Sep 2011 19:29:19 +0000 (23:29 +0400)]
ospfd: spelling

13 years agobgpd: spelling
Denis Ovsienko [Sat, 10 Sep 2011 17:50:53 +0000 (21:50 +0400)]
bgpd: spelling

13 years agobgpd: spelling
Denis Ovsienko [Sat, 10 Sep 2011 12:53:30 +0000 (16:53 +0400)]
bgpd: spelling

13 years agoospfd: use existing macro for consistency
Denis Ovsienko [Sat, 10 Sep 2011 12:40:23 +0000 (16:40 +0400)]
ospfd: use existing macro for consistency

13 years agoversion RE-0.99.17.3
Denis Ovsienko [Wed, 7 Sep 2011 13:44:10 +0000 (17:44 +0400)]
version RE-0.99.17.3

13 years agoospfd: revert recent PIE change to fix amd64 build
Denis Ovsienko [Wed, 7 Sep 2011 13:40:38 +0000 (17:40 +0400)]
ospfd: revert recent PIE change to fix amd64 build

This reverts commit 68575f4babf4d6fc302c366898a1047f13629214.

13 years agoversion RE-0.99.17.2
Denis Ovsienko [Wed, 7 Sep 2011 11:40:06 +0000 (15:40 +0400)]
version RE-0.99.17.2

13 years agobuild: build ospfd as Position-Independed Executable (if appropriate)
Dmitrij Tejblum [Sat, 3 Sep 2011 10:35:24 +0000 (14:35 +0400)]
build: build ospfd as Position-Independed Executable (if appropriate)

Since 46bc0e432e75, all the binaries are built as Position-Independed
Executables (if available and enabled). ospfd was missed for some
unknown reason.

13 years agoospfd: address more trivial compiler warnings
Denis Ovsienko [Sun, 28 Aug 2011 18:38:45 +0000 (22:38 +0400)]
ospfd: address more trivial compiler warnings

* ospf_ase.c
  * ospf_ase_complete_direct_routes(): dismiss unused variable
  * ospf_ase_calculate_route(): put assignments into parentheses

13 years agozebra: add missing includes
Denis Ovsienko [Sun, 28 Aug 2011 18:29:52 +0000 (22:29 +0400)]
zebra: add missing includes

13 years agoospf6d: address more trivial compiler warnings
Denis Ovsienko [Sat, 27 Aug 2011 18:19:34 +0000 (22:19 +0400)]
ospf6d: address more trivial compiler warnings

* ospf6_main.c: include required headers
* ospf6_asbr.h: idem
* ospf6_spf.c
  * ospf6_spf_install(): remove unused variables

13 years agoospfd: sizing macros cleanup
Denis Ovsienko [Tue, 23 Aug 2011 07:36:27 +0000 (11:36 +0400)]
ospfd: sizing macros cleanup

* ospf_spf.c
  * ROUTER_LSA_TOS_SIZE: prepend OSPF_ and move to ospf_lsa.h
  * ROUTER_LSA_MIN_SIZE: replace with existing OSPF_ROUTER_LSA_LINK_SIZE

13 years agolib: use "protocol-independed API" from RFC3678, if that is available
Dmitrij Tejblum [Mon, 22 Aug 2011 07:39:35 +0000 (11:39 +0400)]
lib: use "protocol-independed API" from RFC3678, if that is available

(This commit is based on the patch from BZ#420, and should fix that bug.)

* configure.ac: detect availability of that API
* sockopt.c (setsockopt_ipv4_multicast): use it for join/leave IPv4
  multicast groups

13 years agolib: futher simplification of setsockopt_ipv4_multicast()
Dmitrij Tejblum [Fri, 19 Aug 2011 19:00:30 +0000 (23:00 +0400)]
lib: futher simplification of setsockopt_ipv4_multicast()

* sockopt.c (setsockopt_ipv4_multicast): check for wrong optname with
  assert(), rather than return an error.

13 years agoospf6d: add missing include
Denis Ovsienko [Sat, 20 Aug 2011 19:12:00 +0000 (23:12 +0400)]
ospf6d: add missing include

Two extern declarations in ospf6_abr.h are based on struct ospf6_route,
which may not be available at the time ospf6_abr.h is included. This may
lead to warnings after including ospf6_abr.h just for the structures
defined in it.

13 years agoospf6d: ospf6_lsa_cmd_init() does not exist
Denis Ovsienko [Sat, 20 Aug 2011 18:45:58 +0000 (22:45 +0400)]
ospf6d: ospf6_lsa_cmd_init() does not exist

13 years agoospf6d: move named constants to ospf6d.h
Denis Ovsienko [Sat, 20 Aug 2011 16:58:15 +0000 (20:58 +0400)]
ospf6d: move named constants to ospf6d.h

13 years agolib: fix omission in the previous commit to lib/sockopt.c
Dmitrij Tejblum [Fri, 19 Aug 2011 18:25:23 +0000 (22:25 +0400)]
lib: fix omission in the previous commit to lib/sockopt.c

* sockopt.c (setsockopt_ipv4_multicast_if): fix missed line in
  the previous commit.

13 years agoospf6d: justify some ABR debug code
Denis Ovsienko [Fri, 19 Aug 2011 18:24:27 +0000 (22:24 +0400)]
ospf6d: justify some ABR debug code

* ospf6_abr.c
  * ospf6_abr_examin_summary(): only fill "buf" when it is used

13 years agolib: simplify interface of setsockopt_multicast_ipv4().
Dmitrij Tejblum [Thu, 18 Aug 2011 16:22:17 +0000 (20:22 +0400)]
lib: simplify interface of setsockopt_multicast_ipv4().

* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all
  non-ancient OSes can use it anyway), and if_addr parameter (the address
  of the interface) is now gone. (setsockopt_ipv4_multicast_if):
  IP_MULTICAST_IF processing moved to this new function

* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,
  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),
  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,
  rip_interface_new): adapt to the new interface

13 years agoospf6d: spelling
Denis Ovsienko [Fri, 19 Aug 2011 12:27:16 +0000 (16:27 +0400)]
ospf6d: spelling

13 years agobgpd: improve "show ip bgp scan detail"
Denis Ovsienko [Tue, 9 Aug 2011 10:42:58 +0000 (14:42 +0400)]
bgpd: improve "show ip bgp scan detail"

* bgp_nexthop.c (show_ip_bgp_scan_tables): access proper structure field
  in AF_INET6 case, handle ifindex NH type properly

13 years agobgpd: dismiss some zlookup checks
Denis Ovsienko [Mon, 8 Aug 2011 15:36:44 +0000 (19:36 +0400)]
bgpd: dismiss some zlookup checks

bgp_nexthop_onlink(): zlookup is not used here at all
bgp_nexthop_lookup_ipv6(): rely on the detection performed by "query"
  function (this also changes the fallback value to 0), reorder if-block
bgp_nexthop_lookup(): idem

13 years agobgpd: add "show ip bgp scan detail" command
Denis Ovsienko [Fri, 5 Aug 2011 17:47:08 +0000 (21:47 +0400)]
bgpd: add "show ip bgp scan detail" command

* bgp_nexthop.c: (show_ip_bgp_scan) transform into
  show_ip_bgp_scan_tables(), which uses inet_ntop() and can dump
  nexthops on request; (show_ip_bgp_scan_detail_cmd) new function

13 years agobgpd: touch nexthop handling code
Denis Ovsienko [Fri, 5 Aug 2011 14:52:52 +0000 (18:52 +0400)]
bgpd: touch nexthop handling code

bgp_nexthop_lookup_ipv6(): declare variables where they are actually
used, drop no-op initialization (the field is already 0)
bgp_nexthop_lookup(): ditto
bgp_nexthop_check_ebgp(): rename to bgp_nexthop_onlink()
bgp_nexthop_cache_changed(): rename to bgp_nexthop_cache_different()

13 years agobgpd: use XCALLOC to allocate bgpd damp array
Stephen Hemminger [Thu, 5 Aug 2010 17:26:30 +0000 (10:26 -0700)]
bgpd: use XCALLOC to allocate bgpd damp array

* bgpd: (bgp_damp_parameter_set) The BGP reuse_index is not initialized
  properly.  This would cause sporadic crash when disabling dampening.  Use
  XCALLOC correctly and the right size array is initialized and no memset is
  needed.

13 years agolib: fix more format warnings (#637)
Christian Hammers [Wed, 23 Mar 2011 10:07:55 +0000 (13:07 +0300)]
lib: fix more format warnings (#637)

The following patch was also neccessary to compile.

* command.c: (config_logmsg_cmd) use "%s" format spec
* if.c: (connected_log) ditto

13 years agoospfd: remove useless RFC1583 check
Alexandre Chappuis [Tue, 2 Aug 2011 13:37:39 +0000 (17:37 +0400)]
ospfd: remove useless RFC1583 check

* ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from
  ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set.
  Therefore, the check that the flag is set doesn't make sense at all
  and it can consequently be removed without doing any harm.

Signed-off-by: Alexandre Chappuis <alc@open.ch>
Signed-off-by: Roman Hoog Antink <rha@open.ch>
13 years agolib: remove unused variable
Denis Ovsienko [Mon, 1 Aug 2011 17:59:04 +0000 (21:59 +0400)]
lib: remove unused variable

* sockopt.c (getsockopt_ifindex): "ifindex" was never used

13 years agodelete CVS keywords
Denis Ovsienko [Mon, 1 Aug 2011 12:52:03 +0000 (16:52 +0400)]
delete CVS keywords

13 years agoospf6d: Remove obsolete code
Tom Goff [Wed, 10 Nov 2010 21:03:23 +0000 (13:03 -0800)]
ospf6d: Remove obsolete code

* ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers
    to a nonexistent function and structure member.

13 years agolib: zlog should clean up its memory
Tom Goff [Wed, 10 Nov 2010 21:01:17 +0000 (13:01 -0800)]
lib: zlog should clean up its memory

* log.c: (closezlog) Also free the dynamically allocated filename when
    a log is closed.

13 years agobgpd: Fix display of unsigned attributes
Wataru Tanitsu [Fri, 10 Sep 2010 16:47:56 +0000 (09:47 -0700)]
bgpd: Fix display of unsigned attributes

* bgp_route.c: (route_vty_out*) The local prefix, metric and weight values
  are all stored as uint32_t.  Change the format to %u so that large values
  are not displayed as negative integers.

13 years agoospfd: Lower level of some common messages from info to debug
Paul Jakma [Mon, 6 Dec 2010 12:21:52 +0000 (12:21 +0000)]
ospfd: Lower level of some common messages from info to debug

* ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be
  debug log level, not info, to avoid spamming 'terminal monitor'

13 years agolib: prefix.c nano-optimisation
Paul Jakma [Sun, 24 Jan 2010 21:41:02 +0000 (21:41 +0000)]
lib: prefix.c nano-optimisation

* lib/prefix.c: (prefix_match) nano-optimisation, let it return early
  without copying pointers.

13 years agobgpd: Fix compile failure if IPv6 build was disabled.
Paul Jakma [Wed, 23 Mar 2011 10:30:30 +0000 (10:30 +0000)]
bgpd: Fix compile failure if IPv6 build was disabled.

* bgp_route.c: ({no_,}ipv6_bgp_network_ttl_cmd) depends on ipv6_bgp_network
  which is HAVE_IPV6, so these should be too.
  (bgp_route_init) and the installs should be similarly ifdefed

13 years agobgpd: rename SAFI 3 according to RFC4760
Denis Ovsienko [Sun, 17 Jul 2011 15:33:21 +0000 (19:33 +0400)]
bgpd: rename SAFI 3 according to RFC4760

- 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

13 years agoconfigure: fix OpenPAM detection
Denis Ovsienko [Thu, 14 Jul 2011 20:24:15 +0000 (00:24 +0400)]
configure: fix OpenPAM detection

13 years agoconfigure: fix FreeBSD header detection (BZ#408)
Denis Ovsienko [Thu, 14 Jul 2011 12:30:08 +0000 (16:30 +0400)]
configure: fix FreeBSD header detection (BZ#408)

This change is based on Xavier Beaudouin's patch (which fixes detection
of 3 config.h macros on FreeBSD without any impact to Linux build of
Quagga) and FreeBSD port patch (which fixes 5 config.h macros, but
breaks the Linux build), it fixes 5 macros and works for both FreeBSD 8
and Linux.

13 years agobgpd: more SAFI fixes
Denis Ovsienko [Thu, 14 Jul 2011 08:36:19 +0000 (12:36 +0400)]
bgpd: more SAFI fixes

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

13 years agobgpd: fix SAFI for for MPLS labeled VPN-IPv6
Denis Ovsienko [Wed, 13 Jul 2011 12:53:13 +0000 (16:53 +0400)]
bgpd: fix SAFI for for MPLS labeled VPN-IPv6

* 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()

13 years agobgpd: consistent log msg format (BZ#565)
heasley [Tue, 12 Jul 2011 16:09:18 +0000 (20:09 +0400)]
bgpd: consistent log msg format (BZ#565)

13 years agoospf6d: check MTU with message header size in mind
Dmitrij Tejblum [Tue, 12 Jul 2011 13:53:33 +0000 (17:53 +0400)]
ospf6d: check MTU with message header size in mind

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

13 years agoospf6d: copy "mtu-ignore" option from ospfd
Dmitrij Tejblum [Fri, 22 Apr 2011 15:27:54 +0000 (19:27 +0400)]
ospf6d: copy "mtu-ignore" option from ospfd

"mtu-ignore" is an option ospfd used to mimic from the vendor's
implementation, now ospf6d will also implement it.

* ospf6_interface.h: extend ospf6_interface structure by one flag
* ospf6_interface.c: (ipv6_ospf6_mtu_ignore, no_ipv6_ospf6_mtu_ignore):
  new declarations; (ospf6_interface_create): show initial value for
  consistency; (ospf6_interface_show): print flag status
* ospf6_message.c: (ospf6_dbdesc_recv): consider interface-specific flag
  when checking MTU

13 years agoversion RE-0.99.17.1
Denis Ovsienko [Tue, 12 Jul 2011 13:14:13 +0000 (17:14 +0400)]
version RE-0.99.17.1

13 years agobgpd: Remove AS Path limit/TTL functionality
Paul Jakma [Mon, 4 Jul 2011 20:41:59 +0000 (00:41 +0400)]
bgpd: Remove AS Path limit/TTL functionality

* draft-ietf-idr-as-pathlimit doesn't seem to have gone anywhere, and its
  author does not think it will make progress in IDR. Remove all support
  introduced for it, but leave stubs for the commands to avoid breaking
  any configurations.

  Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d.
(cherry picked from commit c8f3fe3063cb9ff193b13011cfbda3e605395340)

Conflicts:

bgpd/bgp_attr.c (caused by c8e7b895, resolved)

13 years agobgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error
Paul Jakma [Sun, 5 Dec 2010 17:17:26 +0000 (17:17 +0000)]
bgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error

* bgp_attr.c: (bgp_attr_ext_communities) Certain extended-community attrs
  can leave attr->flag indicating ext-community is present, even though no
  extended-community object has been attached to the attr structure.  Thus a
  null-pointer dereference can occur later.
  (bgp_attr_community) No bug fixed here, but tidy up flow so it has same
  form as previous.

  Problem and fix thanks to anonymous reporter.
(cherry picked from commit 0c46638122f10019a12ae9668aec91691cf2e017)

13 years agodoc: fix "ipv6 address" interface command syntax (#608)
Denis Ovsienko [Fri, 18 Mar 2011 17:20:53 +0000 (20:20 +0300)]
doc: fix "ipv6 address" interface command syntax (#608)
(cherry picked from commit e6844aa5d23cf56dd1f31afc96e8145ab188953f)

13 years agoripd: resolve debug statements issue (bug 442)
Andrew J. Schorr [Thu, 24 Feb 2011 10:52:14 +0000 (13:52 +0300)]
ripd: resolve debug statements issue (bug 442)

...A nasty bug, if you forgot to disable debugging, stored the config
and reboot your machine - if you really depend on ripd, then the machine
will not fully come back on the network, because ripd fails.
(cherry picked from commit 0fa0335316ce14a79ea4bbb0c40e1322c9941dd3)

13 years agobgpd: VTY string fixes for debug commands
David Ward [Mon, 17 Jan 2011 07:58:52 +0000 (10:58 +0300)]
bgpd: VTY string fixes for debug commands

* bgpd/bgp_debug.c: fix VTY strings for BGP debug commands to match
  correct syntax
(cherry picked from commit 6e22b9017e1ae2ce61c383b1b2b63973207704ac)

13 years agobgpd: fix handling of "Unsupported Capability"
Dmitrij Tejblum [Fri, 14 Jan 2011 15:27:05 +0000 (18:27 +0300)]
bgpd: fix handling of "Unsupported Capability"

* bgp_packet.c: (bgp_notify_receive) justify the difference between
BGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as
it is explained in RFC5492, page 3, paragraph 1.

"Unsupported Capability" error does not mean, that the peer doesn't
support capabilities advertisement -- quite the opposite (if the peer
would not support capabilities advertisement, the code would be
"Unsupported Optional Parameter"). Thus there is no reason to mark
the peer as one non-supporting capabilities advertisement.

Example: suppose the peer is in fact IPv6-only, but we didn't configure
anything address-family specific for it. Then, the peer would refuse
the session with "Unsupported Capability" code. If we internally set
the peer as non-supporting capabilities advertisement after that, we
will not be able to establish the session with it ever, even with a
fixed configuration -- IPv6-only BGP session cannot be established
without capabilities.

In practice an edge case would be seen as the same IPv6 peer working
with its "neighbor" block read from bgpd.conf, but not working, when
slowly input in "conf t" mode.
(cherry picked from commit c7aa8abd8788c3607ad0131f02e892cf92221e40)

13 years agoospf6d: fix crash in SPF calculation
Dmitrij Tejblum [Thu, 13 Jan 2011 15:25:40 +0000 (18:25 +0300)]
ospf6d: fix crash in SPF calculation

* ospf6_spf.c: Don't replace a node with another node with a lower
  number of hops, instead get them from the queue in the correct
  order. (Actually, the replacement crashed the ospf6d daemon
  rather than worked.)
(cherry picked from commit 403138e189c24f6867824c4eeb668d11564e1ca0)

13 years agobgpd: fix community-list error message spelling
Denis Ovsienko [Wed, 8 Dec 2010 15:51:37 +0000 (18:51 +0300)]
bgpd: fix community-list error message spelling

* bgp_vty.c: (community_list_perror, show_ip_community_list_arg,
  show_ip_extcommunity_list_arg) fix spelling
(cherry picked from commit b729294c8c5c6f2af8ddf6cfbea2374b6faabe9d)

13 years agoinfrastructure: Express preference for published git repos
Greg Troxel [Wed, 3 Nov 2010 11:37:23 +0000 (07:37 -0400)]
infrastructure: Express preference for published git repos

* HACKING: Express notion that a published git repository is
  preferred.  Fold request for commit message into patch section.
  Express desire for comments in code explaining correctness of
  post-commit state, and for commit message to explain correctness of
  the change.

13 years agoinfrastructure: Whitespace cleanup.
Greg Troxel [Wed, 3 Nov 2010 11:22:00 +0000 (07:22 -0400)]
infrastructure: Whitespace cleanup.

HACKING: Whitespace changes only.

13 years agoinfrastructure: Clarify commit message format.
Greg Troxel [Wed, 3 Nov 2010 11:20:38 +0000 (07:20 -0400)]
infrastructure: Clarify commit message format.

Note 54/72 line length rules, and that this is intended to play nice
with "git log --oneline".

13 years agoAdjust description of tomhenderson repo.
Greg Troxel [Wed, 3 Nov 2010 11:16:32 +0000 (07:16 -0400)]
Adjust description of tomhenderson repo.

Tom's repo is now a clone of the official repo and has an mttr branch
off of 0.99.17.

13 years agobgpd: fix printed value of last-update timestamp
Vladimir L Ivanov [Thu, 21 Oct 2010 10:59:54 +0000 (14:59 +0400)]
bgpd: fix printed value of last-update timestamp

* bgp_route.c: (route_vty_out_detail) calculate time value
    in a way, which works regardless of monotonic clock
    being used or not

13 years agozclient: fix router-id calculation for IPv6 (#595)
Dmitry Tejblum [Mon, 18 Oct 2010 15:05:39 +0000 (19:05 +0400)]
zclient: fix router-id calculation for IPv6 (#595)

If router-id is not specified in ospf6d.conf, ospf6d will get it from
the zebra daemon. But ospf6d originates Link LSAs before the router-id
is returned by zebra, thus this router's Link LSAs will be flooded
with AdvRouter set to 0.

* zclient.c: zclient_start(): send ZEBRA_INTERFACE_ADD message after
  ZEBRA_ROUTER_ID_ADD, not before

13 years agobgpd, lib: adopt afi_t and safi_t in several places
Michael Lambert [Thu, 22 Jul 2010 17:20:55 +0000 (13:20 -0400)]
bgpd, lib: adopt afi_t and safi_t in several places

* bgpd/bgp_attr.c, bgpd/bgp_open.h, bgpd/bgp_route.c, lib/prefix.c,
  lib/prefix.h: Various integer types were being used where, if we
  had strict type checking, afi_t and safi_t would be required.

Signed-off-by: G.Balaji <balajig81@gmail.com>
(cherry picked from commit c8af35ffa2dc79ff7d7ff00b1b61f1f50a100ab6)

14 years agoAdd MTR repository.
Greg Troxel [Fri, 24 Sep 2010 13:22:37 +0000 (09:22 -0400)]
Add MTR repository.

14 years agolib/vty.c: add missing format string when printing out motd message
Nico Golde [Sun, 1 Aug 2010 13:24:35 +0000 (15:24 +0200)]
lib/vty.c: add missing format string when printing out motd message

Signed-off-by: G.Balaji <balajig81@gmail.com>
14 years agoDocument rules for zalloc and friends.
Greg Troxel [Fri, 17 Sep 2010 16:19:13 +0000 (12:19 -0400)]
Document rules for zalloc and friends.

lib/memory.c:z{a,c,re}alloc, zfree, zdup: add requires/effects
comments.

14 years agoAdd pointer to Balaji G. git.
Greg Troxel [Fri, 17 Sep 2010 15:02:45 +0000 (11:02 -0400)]
Add pointer to Balaji G. git.

Balaji has been accumulating patches from the mailing list and
pre-screening them and spiffing up commit messages.

14 years agoSet from even if binfo->extra is NULL.
Greg Troxel [Fri, 17 Sep 2010 14:47:49 +0000 (10:47 -0400)]
Set from even if binfo->extra is NULL.

bgpd/bgp_packet.c:bgp_update_packet(): When extracting the peer, don't
  fail to extract it because "binfo->extra" is NULL.  While one should
  certainly avoid dereferencing binfo->extra, that's not a good reason
  not to use binfo->peer.

Fixes https://bugzilla.quagga.net/show_bug.cgi?id=497.
Patch by Eric Sobocinksi.

14 years agoZebra zserv: bogus conditional
Stephen Hemminger [Wed, 18 Aug 2010 22:56:46 +0000 (15:56 -0700)]
Zebra zserv: bogus conditional

This looks like a bug in original code from misunderstanding
of C rules of evaluation.

14 years agorelease: 0.99.17
Denis Ovsienko [Thu, 19 Aug 2010 09:36:43 +0000 (13:36 +0400)]
release: 0.99.17

* configure.ac: bump up version number

14 years agobgpd: fix handling of AS path data
Chris Hall [Mon, 9 Aug 2010 18:31:37 +0000 (22:31 +0400)]
bgpd: fix handling of AS path data

* bgpd/bgp_aspath.c
  * assegments_parse(): add handling of AS4_PATH input, update bounds
    checks, add check for AS segment type
  * aspath_parse(): add handling of AS4_PATH input, expect
    assegments_parse() to do length checking
  * aspath_empty(): update for the new function prototype
* bgpd/bgp_aspath.h: ditto
* tests/aspath_test.c: ditto
* bgpd/bgp_attr.c
  * bgp_attr_aspath(): add handling of AS4_PATH input, update flags
    checks, change returned type
  * bgp_attr_as4_path(): discard, superseded by bgp_attr_aspath()
  * bgp_attr_parse(): update respectively

14 years agobgpd: tighten bounds checking in RR ORF msg reader
Chris Hall [Fri, 14 May 2010 12:38:39 +0000 (16:38 +0400)]
bgpd: tighten bounds checking in RR ORF msg reader

* bgp_packet.c: (bgp_route_refresh_receive) add validation of
  "Length" (RFC5292) field value, check input stream bounds
  each time bytes are pulled from it

14 years agozebra: fix infinite loop when deleting an interface
Roman Hoog Antink [Wed, 5 May 2010 14:00:50 +0000 (16:00 +0200)]
zebra: fix infinite loop when deleting an interface

When deleting a VLAN interface after flushing its
addresses, zebra uses 100% CPU time and freezes.

 * interface.c: The while loop in line 407 that
   should clean up connected routes never hits one
   of the 2 lines "last = node;" and thus loops
   forever.

Signed-off-by: Roman Hoog Antink <rha@open.ch>
14 years agoUpdate for git and emphasize asking for good reports.
Greg Troxel [Wed, 5 May 2010 11:51:26 +0000 (07:51 -0400)]
Update for git and emphasize asking for good reports.

14 years agobuild: ignore mkinstalldirs and texinfo.tex
David Lamparter [Wed, 16 Sep 2009 00:20:00 +0000 (02:20 +0200)]
build: ignore mkinstalldirs and texinfo.tex

these are autogenerated by autoreconf, drop them from git.