]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
13 years agoMarker merge for 'RE-0.99.17.6'
Paul Jakma [Sun, 8 Jan 2012 14:47:06 +0000 (14:47 +0000)]
Marker merge for 'RE-0.99.17.6'

This marker merge (i.e. an 'ours' strategy merge) is a placeholder to show
that all commits in Quagga-RE stable, to its release RE-0.99.17.6 tag, have
been reviewed and merged into 'master'.

13 years agobgpd: Fix incorrect attribute type code in call to bgp_attr_malformed
Paul Jakma [Sun, 8 Jan 2012 14:17:42 +0000 (14:17 +0000)]
bgpd: Fix incorrect attribute type code in call to bgp_attr_malformed

13 years agobgpd: Improve flag error messages in bgp_attr_aspath
Paul Jakma [Sun, 8 Jan 2012 14:15:03 +0000 (14:15 +0000)]
bgpd: Improve flag error messages in bgp_attr_aspath

* bgpd/bgp_attr.c: (bgp_attr_aspath) error message could be misleading,
  clearly log what flag was incorrect.

  (Problem noted in "bgpd: fix error message in bgp_attr_aspath()" in
   Quagga-RE)

13 years agolib: use prefix bit length macros
Denis Ovsienko [Mon, 24 Oct 2011 14:45:05 +0000 (18:45 +0400)]
lib: use prefix bit length macros

13 years agoospfd: use IS_LSA_SELF() where appropriate
Denis Ovsienko [Mon, 24 Oct 2011 14:17:09 +0000 (18:17 +0400)]
ospfd: use IS_LSA_SELF() where appropriate

13 years agobgpd: rewrite attr flag error logging
Denis Ovsienko [Sun, 23 Oct 2011 18:32:44 +0000 (22:32 +0400)]
bgpd: rewrite attr flag error logging

* bgp_attr.c
  * attr_flag_str: new message list
  * bgp_attr_flags_diagnose(): new function, implements previously added
    error logging in a generic way
  * bgp_attr_origin(): use bgp_attr_flags_diagnose()
  * bgp_attr_nexthop(): ditto
  * bgp_attr_med(): ditto
  * bgp_attr_local_pref(): ditto
  * bgp_attr_atomic(): ditto
  * bgp_attr_originator_id(): ditto
  * bgp_attr_cluster_list(): ditto
  * bgp_mp_reach_parse(): ditto
  * bgp_mp_unreach_parse(): ditto

13 years agodoc: "[no] router zebra" does not belong to ospfd
Denis Ovsienko [Fri, 7 Oct 2011 16:43:59 +0000 (20:43 +0400)]
doc: "[no] router zebra" does not belong to ospfd

13 years agoospfd: justify ospf_default_originate_timer()
Denis Ovsienko [Mon, 3 Oct 2011 10:08:01 +0000 (14:08 +0400)]
ospfd: justify ospf_default_originate_timer()

The function is implemented in ospf_lsa.c, move its "extern" declaration
to ospf_lsa.h for consistency.

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

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 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 agolib/if: trivial, fix rarely used if debug function to print everything
Paul Jakma [Fri, 6 Jan 2012 16:07:39 +0000 (16:07 +0000)]
lib/if: trivial, fix rarely used if debug function to print everything

* if.c: (if_dump) loop that doesn't do anything, wants to be
  before the zlog of what it's meant to print out so all the connected
  addresses get printed out. Trival: just a debug function

13 years agogeneral: remove inline qualifiers and move in-header functions to objects
Paul Jakma [Fri, 8 Apr 2011 11:44:43 +0000 (12:44 +0100)]
general: remove inline qualifiers and move in-header functions to objects

* (general) Move functions in headers into files, to be compiled into
  shared object files. Remove inline qualifier from functions. Let the
  compiler do the work.

13 years agoversion RE-0.99.17.6
Denis Ovsienko [Thu, 5 Jan 2012 13:46:53 +0000 (17:46 +0400)]
version RE-0.99.17.6

13 years agodoc: update BGP RFC references
Denis Ovsienko [Tue, 27 Dec 2011 14:06:45 +0000 (18:06 +0400)]
doc: update BGP RFC references

13 years agozebra: fix IPv6 RA wrt interface removal (BZ#480)
Denis Ovsienko [Tue, 27 Dec 2011 06:18:47 +0000 (10:18 +0400)]
zebra: fix IPv6 RA wrt interface removal (BZ#480)

13 years agozebra: fix ifindex test condition (BZ#487)
Matthias Ferdinand [Mon, 26 Dec 2011 12:35:30 +0000 (16:35 +0400)]
zebra: fix ifindex test condition (BZ#487)

When the same ip address is used on several interfaces,
and one of them gets deleted (or equivalent: set to down and
then address removed), rib_delete_ipv[46] will also remove
the connected route from other interfaces.

rib_delete_ipv[46] is called twice when an interface is
deleted:
    - for the "ifdown" event
    - for the address removal
(note: this may be specific to the netlink interface of linux)
The second call does not find the connected route to that same
ifindex anymore, but deletes similar connected routes to any
other ifindex instead.

Reason: the ifindex check is on the same level as the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything
matches except for the ifindex, the "else" part (intended for
different route types) is executed, thus removing the route
from the wrong interface.

fix: move ifindex check inside the "then" part of the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected
routes to other ifindexes will not spill over to the "else"
part for different route types anymore.

13 years agoospf6d: fix compiler warning messages
Vyacheslav Trushkin [Thu, 22 Dec 2011 14:24:19 +0000 (18:24 +0400)]
ospf6d: fix compiler warning messages

* fix disagreement with C99 in zlog_debug calls
Format specifier in some zlog_debug calls for size_t values
was changed in order to C99 ('%u' -> '%zu').

* fix -Wsign-compare warnings
Type of return value of ospf6_packet_max() was changed.

13 years agolib: fix some strtoul() use cases
Ulrich Weber [Tue, 20 Dec 2011 22:24:11 +0000 (02:24 +0400)]
lib: fix some strtoul() use cases

...otherwise 4294967295 is not a valid value on 32bit systems

13 years agoospf6d: Route locking (memory) cleanup
Tom Goff [Wed, 10 Nov 2010 21:03:02 +0000 (13:03 -0800)]
ospf6d: Route locking (memory) cleanup

* ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even
  when there's no next route.  This is consistent with how
  ospf6_route_next() behaves.

* ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last
  route considered is always unlocked.  This is needed when the for
  loop terminates because ospf6_route_is_prefix() returns zero.

Signed-off-by: Vyacheslav Trushkin <me@dogonthesun.net>
13 years agoospf6d: Have ospf6d cleanup when it terminates normally
Tom Goff [Wed, 10 Nov 2010 21:01:41 +0000 (13:01 -0800)]
ospf6d: Have ospf6d cleanup when it terminates normally

A clean exit makes it easier to use memory debuggers.

* ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map
  cleanup.
* ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa
  handler vector.
* ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to
  gracefully exit.
* ospf6_message.c: (ospf6_message_terminate) Add a function that frees
  the send and receive buffers.
* ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function.
  Disable ospf6 before freeing everything.

Signed-off-by: Vyacheslav Trushkin <me@dogonthesun.net>
Conflicts:

ospf6d/ospf6_lsa.h

13 years agolib: Add a function to delete all interfaces
Tom Goff [Wed, 10 Nov 2010 21:00:54 +0000 (13:00 -0800)]
lib: Add a function to delete all interfaces

if.c: (if_terminate) This adds a cleanup function that can be called
    when a daemon exits, similar to vty_terminate().

13 years agodoc: update BGP RFC references
Denis Ovsienko [Tue, 27 Dec 2011 14:06:45 +0000 (18:06 +0400)]
doc: update BGP RFC references

13 years agozebra: fix IPv6 RA wrt interface removal (BZ#480)
Denis Ovsienko [Tue, 27 Dec 2011 06:18:47 +0000 (10:18 +0400)]
zebra: fix IPv6 RA wrt interface removal (BZ#480)

13 years agozebra: fix ifindex test condition (BZ#487)
Matthias Ferdinand [Mon, 26 Dec 2011 12:35:30 +0000 (16:35 +0400)]
zebra: fix ifindex test condition (BZ#487)

When the same ip address is used on several interfaces,
and one of them gets deleted (or equivalent: set to down and
then address removed), rib_delete_ipv[46] will also remove
the connected route from other interfaces.

rib_delete_ipv[46] is called twice when an interface is
deleted:
    - for the "ifdown" event
    - for the address removal
(note: this may be specific to the netlink interface of linux)
The second call does not find the connected route to that same
ifindex anymore, but deletes similar connected routes to any
other ifindex instead.

Reason: the ifindex check is on the same level as the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything
matches except for the ifindex, the "else" part (intended for
different route types) is executed, thus removing the route
from the wrong interface.

fix: move ifindex check inside the "then" part of the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected
routes to other ifindexes will not spill over to the "else"
part for different route types anymore.

13 years agoospf6d: fix compiler warning messages
Vyacheslav Trushkin [Thu, 22 Dec 2011 14:24:19 +0000 (18:24 +0400)]
ospf6d: fix compiler warning messages

* fix disagreement with C99 in zlog_debug calls
Format specifier in some zlog_debug calls for size_t values
was changed in order to C99 ('%u' -> '%zu').

* fix -Wsign-compare warnings
Type of return value of ospf6_packet_max() was changed.

13 years agolib: fix some strtoul() use cases
Ulrich Weber [Tue, 20 Dec 2011 22:24:11 +0000 (02:24 +0400)]
lib: fix some strtoul() use cases

...otherwise 4294967295 is not a valid value on 32bit systems

13 years agoospf6d: add verifying user's privileges
Vyacheslav Trushkin [Tue, 20 Dec 2011 16:52:31 +0000 (20:52 +0400)]
ospf6d: add verifying user's privileges

13 years agoospfd: fix bug in NSSA ABR status check
Denis Ovsienko [Sun, 18 Dec 2011 12:27:02 +0000 (16:27 +0400)]
ospfd: fix bug in NSSA ABR status check

* ospf_abr.c
  * ospf_abr_nssa_am_elected(): feed "best" instead of "address of best"
    into IPV4_ADDR_CMP(), because "best" is a pointer; also, mean s_addr
    field of the structures to get better typed pointers

13 years agolib: address type-punned pointers in prefix_same()
Denis Ovsienko [Sun, 18 Dec 2011 11:40:17 +0000 (15:40 +0400)]
lib: address type-punned pointers in prefix_same()

IPV4_ADDR_SAME() wasn't passed the right union member, this could cause
a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before
the error could be created by macro upgrade.

13 years agobgpd: justify checks for IPv4 class D/E
Denis Ovsienko [Sat, 17 Dec 2011 15:39:30 +0000 (19:39 +0400)]
bgpd: justify checks for IPv4 class D/E

* lib/prefix.h
  * IPV4_CLASS_DE(): make consistent with counterpart macros
* bgp_packet.c
  * bgp_open_receive(): test using macro instead of ">="
* bgp_route.c
  * bgp_update_rsclient(): idem
  * bgp_update_main(): idem

13 years agoospfd: fix packet reception for FreeBSD 10.
Dmitrij Tejblum [Mon, 12 Dec 2011 16:30:10 +0000 (20:30 +0400)]
ospfd: fix packet reception for FreeBSD 10.

* ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not
  subtract the IP header size from ip_len.

This is the patch from FreeBSD's ports/net/quagga/files/patch-ospfd__ospf_packet.c,
by Boris Kovalenko.

13 years agozebra: ZEBRA_HELLO and mopping up routes (BZ#448)
Vyacheslav Trushkin [Sun, 11 Dec 2011 14:48:47 +0000 (18:48 +0400)]
zebra: ZEBRA_HELLO and mopping up routes (BZ#448)

ZEBRA_HELLO message is used by routing daemons to inform zebra
what type of routes daemon will be announcing to zebra. Also
zebra uses route_type_oaths array to track which daemon announces
which protocol. Zebra mops up routes if daemon didn't for some
reason.

13 years agolib: fix type-punning in ip_masklen()
Denis Ovsienko [Fri, 16 Dec 2011 12:25:02 +0000 (16:25 +0400)]
lib: fix type-punning in ip_masklen()

ip_masklen() was likely to return incorrect results after being compiled
with -fstrict-aliasing (-O2, -O3, -Os)

13 years agolib: optimize ip_masklen()
Denis Ovsienko [Sun, 4 Dec 2011 19:21:55 +0000 (23:21 +0400)]
lib: optimize ip_masklen()

The new implementation makes use of a 64KB mapping table, which makes it
possible to compute masklen faster and with constant execution time. The
map also allows for additional version of the function, which can detect
errors in input argument.

The previous implementation had a variable cost of execution, which
depended on masklen in a non-linear manner, and at its worst (/31) was
4 times slower, than the new implementation. The only case of old
function just slightly outperforming the new one is /0, which is of
little practical interest.

13 years agoospf6d: add verifying user's privileges
Vyacheslav Trushkin [Tue, 20 Dec 2011 16:52:31 +0000 (20:52 +0400)]
ospf6d: add verifying user's privileges

13 years agoospfd: fix bug in NSSA ABR status check
Denis Ovsienko [Sun, 18 Dec 2011 12:27:02 +0000 (16:27 +0400)]
ospfd: fix bug in NSSA ABR status check

* ospf_abr.c
  * ospf_abr_nssa_am_elected(): feed "best" instead of "address of best"
    into IPV4_ADDR_CMP(), because "best" is a pointer; also, mean s_addr
    field of the structures to get better typed pointers

13 years agolib: address type-punned pointers in prefix_same()
Denis Ovsienko [Sun, 18 Dec 2011 11:40:17 +0000 (15:40 +0400)]
lib: address type-punned pointers in prefix_same()

IPV4_ADDR_SAME() wasn't passed the right union member, this could cause
a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before
the error could be created by macro upgrade.

13 years agobgpd: justify checks for IPv4 class D/E
Denis Ovsienko [Sat, 17 Dec 2011 15:39:30 +0000 (19:39 +0400)]
bgpd: justify checks for IPv4 class D/E

* lib/prefix.h
  * IPV4_CLASS_DE(): make consistent with counterpart macros
* bgp_packet.c
  * bgp_open_receive(): test using macro instead of ">="
* bgp_route.c
  * bgp_update_rsclient(): idem
  * bgp_update_main(): idem

13 years agoospfd: fix packet reception for FreeBSD 10.
Dmitrij Tejblum [Mon, 12 Dec 2011 16:30:10 +0000 (20:30 +0400)]
ospfd: fix packet reception for FreeBSD 10.

* ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not
  subtract the IP header size from ip_len.

This is the patch from FreeBSD's ports/net/quagga/files/patch-ospfd__ospf_packet.c,
by Boris Kovalenko.

13 years agozebra: ZEBRA_HELLO and mopping up routes (BZ#448)
Vyacheslav Trushkin [Sun, 11 Dec 2011 14:48:47 +0000 (18:48 +0400)]
zebra: ZEBRA_HELLO and mopping up routes (BZ#448)

ZEBRA_HELLO message is used by routing daemons to inform zebra
what type of routes daemon will be announcing to zebra. Also
zebra uses route_type_oaths array to track which daemon announces
which protocol. Zebra mops up routes if daemon didn't for some
reason.

13 years agolib: fix compile warnings from set-never-used
Stephen Hemminger [Tue, 6 Dec 2011 21:29:49 +0000 (01:29 +0400)]
lib: fix compile warnings from set-never-used

The if_dump code had empty loop, that caused set-never-used warning.

13 years agoRevert "lib: address -Wunused-but-set-variable"
Denis Ovsienko [Tue, 6 Dec 2011 21:35:11 +0000 (01:35 +0400)]
Revert "lib: address -Wunused-but-set-variable"

Stephen Hemminger's commits contain all the changes and
several other warning fixes.

This reverts commit 6947dbebdc91b6272f8107a6e0dd211457438606.

13 years agolib: fix SMUX compiler warnings
Stephen Hemminger [Tue, 6 Dec 2011 20:55:15 +0000 (00:55 +0400)]
lib: fix SMUX compiler warnings

Make progname a string, and cast when calling asn1.
Remove variable set but never used.

13 years agozebra: fix warnings in forward proc
Stephen Hemminger [Tue, 6 Dec 2011 20:09:56 +0000 (00:09 +0400)]
zebra: fix warnings in forward proc

Check result of fgets(), and don't set variable that is
never used.

13 years agobgpd: cleanup privs on termination
Stephen Hemminger [Tue, 6 Dec 2011 20:04:46 +0000 (00:04 +0400)]
bgpd: cleanup privs on termination

When doing valgrind testing, the privledges from zprivs_init() need
to be cleaned up on exit.

13 years agoospfd: remove unused code
Stephen Hemminger [Tue, 6 Dec 2011 19:54:17 +0000 (23:54 +0400)]
ospfd: remove unused code

The code for nssa_range and other bits that were written but
never used.

13 years agobgpd: store nexthop info for redistributed IPV6 routes
Stephen Hemminger [Tue, 6 Dec 2011 10:51:10 +0000 (14:51 +0400)]
bgpd: store nexthop info for redistributed IPV6 routes

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

13 years agoospfd: avoid redundant lookup in ospf_redistribute_withdraw
Stephen Hemminger [Tue, 6 Dec 2011 10:46:42 +0000 (14:46 +0400)]
ospfd: avoid redundant lookup in ospf_redistribute_withdraw

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

13 years agolib: fix memory leak on connect() failure
Stephen Hemminger [Tue, 6 Dec 2011 10:09:18 +0000 (14:09 +0400)]
lib: fix memory leak on connect() failure

Change sockunion_log() to not use strdup(). This fixes a small memory
leak that occurs on every failed connect(), and is simpler/cleaner.

13 years agolib: call filter delete hook before freeing access list
Stephen Hemminger [Tue, 6 Dec 2011 10:04:12 +0000 (14:04 +0400)]
lib: call filter delete hook before freeing access list

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

13 years agolib: fix type-punning in ip_masklen()
Denis Ovsienko [Fri, 16 Dec 2011 12:25:02 +0000 (16:25 +0400)]
lib: fix type-punning in ip_masklen()

ip_masklen() was likely to return incorrect results after being compiled
with -fstrict-aliasing (-O2, -O3, -Os)

13 years agolib: optimize ip_masklen()
Denis Ovsienko [Sun, 4 Dec 2011 19:21:55 +0000 (23:21 +0400)]
lib: optimize ip_masklen()

The new implementation makes use of a 64KB mapping table, which makes it
possible to compute masklen faster and with constant execution time. The
map also allows for additional version of the function, which can detect
errors in input argument.

The previous implementation had a variable cost of execution, which
depended on masklen in a non-linear manner, and at its worst (/31) was
4 times slower, than the new implementation. The only case of old
function just slightly outperforming the new one is /0, which is of
little practical interest.

13 years agoRevert "lib: optimize apply_mask_ipv6()"
Denis Ovsienko [Sun, 1 Jan 2012 12:33:12 +0000 (16:33 +0400)]
Revert "lib: optimize apply_mask_ipv6()"

Experience with IPv4 counterpart of this function suggests, that
this way of type-punning is likely to cause errors.

13 years agoRevert "lib: optimize apply_mask_ipv6()"
Denis Ovsienko [Sun, 1 Jan 2012 12:33:12 +0000 (16:33 +0400)]
Revert "lib: optimize apply_mask_ipv6()"

Experience with IPv4 counterpart of this function suggests, that
this way of type-punning is likely to cause errors.

13 years agoospfd: more info in LSA checksum warning (BZ#685)
Jaroslav Fojtik [Sun, 11 Dec 2011 14:22:16 +0000 (18:22 +0400)]
ospfd: more info in LSA checksum warning (BZ#685)

13 years agoospfd: more info in LSA checksum warning (BZ#685)
Jaroslav Fojtik [Sun, 11 Dec 2011 14:22:16 +0000 (18:22 +0400)]
ospfd: more info in LSA checksum warning (BZ#685)

13 years agofix set never used warnings
Stephen Hemminger [Sun, 18 Dec 2011 15:43:40 +0000 (19:43 +0400)]
fix set never used warnings

(This patch was modified to leave calls to stream_getl() in place, they
are necessary for the stream's internal pointer to advance to the
correct position. -- Denis)

Signed-off-by: Denis Ovsienko <infrastation@yandex.ru>
Fix gcc warnings about varables that are set but never used.

* bgpd/bgp_attr.c
  * cluster_unintern(): ret
  * transit_unintern(): ret
  * bgp_attr_default_intern(): attre
  * bgp_mp_reach_parse(): rd_high, rd_low
* bgpd/bgp_route.c
  * bgp_announce_check_rsclient(): bgp
* bgpd/bgp_zebra.c
  * zebra_read_ipv4(): ifindex
  * zebra_read_ipv6(): ifindex
* bgpd/bgpd.c
  * bgp_config_write_peer(): filter
* lib/distribute.c
  * distribute_list_all(): dist
  * distribute_list(): dist
  * distribute_list_prefix_all(): dist
  * distribute_list_prefix(): dist
* lib/if_rmap.c
  * if_rmap(): if_rmap
* lib/vty.c
  * vty_accept(): vty
* lib/zclient.c
  * zclient_read(): ret
* zebra/irdp_interface.c
  * if_group(): zi
* zebra/rt_netlink.c
  * kernel_read(): ret, sock

13 years agoospf6d: always remove the result of a previous SPF calculation
Tom Goff [Wed, 14 Dec 2011 10:11:29 +0000 (14:11 +0400)]
ospf6d: always remove the result of a previous SPF calculation

This is needed to avoid stale routes in some cases; the regression was
introduced by commit 1d19234e79c77a7d55194b513f2a77c6a691bc2c.

* ospf6_spf.c: (ospf6_spf_calculation) Call ospf6_spf_table_finish()
  before possibly returning if no router-LSA is found for the root of
  the SPF tree.

13 years agobgpd: fix regression in ORF procesing (BZ#688)
Denis Ovsienko [Tue, 13 Dec 2011 17:11:39 +0000 (21:11 +0400)]
bgpd: fix regression in ORF procesing (BZ#688)

This issue has been pointed out by Lou Berger and Tim Browski.

* bgp_packet.c
  * bgp_route_refresh_receive(): restore if() condition, which was
    broken by commit fdbc8e77c88f751924299d0bc752371d5cc31116

13 years agolib: optimize apply_mask_ipv6()
Denis Ovsienko [Tue, 18 Oct 2011 18:02:52 +0000 (22:02 +0400)]
lib: optimize apply_mask_ipv6()

13 years agolib: optimize apply_mask_ipv4()
Denis Ovsienko [Tue, 18 Oct 2011 14:33:53 +0000 (18:33 +0400)]
lib: optimize apply_mask_ipv4()

13 years agolib: make masklen2ip6() safer and faster
Denis Ovsienko [Mon, 17 Oct 2011 17:11:10 +0000 (21:11 +0400)]
lib: make masklen2ip6() safer and faster

13 years agolib: fix endianness of masklen2ip()
Denis Ovsienko [Tue, 11 Oct 2011 11:17:45 +0000 (15:17 +0400)]
lib: fix endianness of masklen2ip()

13 years agolib: make masklen2ip() safer and faster
Denis Ovsienko [Sat, 8 Oct 2011 14:15:21 +0000 (18:15 +0400)]
lib: make masklen2ip() safer and faster

13 years agoospf6d: decode message type with LOOKUP()
Denis Ovsienko [Fri, 14 Oct 2011 17:59:58 +0000 (21:59 +0400)]
ospf6d: decode message type with LOOKUP()

* ospf6_message.h
  * OSPF6_MESSAGE_TYPE_CANONICAL(): dismiss
  * OSPF6_MESSAGE_TYPE_NAME(): dismiss
* ospf6_message.c
  * ospf6_message_type_str: rewrite as a message list, add max value
  * ospf6_packet_examin(): update to use LOOKUP()
  * ospf6_receive(): idem
  * ospf6_send(): idem

13 years agoospf6d: make some old sizing checks assertions
Denis Ovsienko [Sat, 8 Oct 2011 13:22:45 +0000 (17:22 +0400)]
ospf6d: make some old sizing checks assertions

As long as ospf6_packet_examin() is now the single checkpoint for
received packets, most of the old checks performed elsewhere can
be converted into assert() constructs. Malformed input data at
respective points can be attributed solely to a programming error,
not a malformed packet.

* ospf6_message.c
  * ospf6_hello_print()
  * ospf6_dbdesc_print()
  * ospf6_lsreq_print()
  * ospf6_lsupdate_print()
  * ospf6_lsack_print()
  * ospf6_hello_recv()
  * ospf6_dbdesc_recv_master()
  * ospf6_dbdesc_recv_slave()
  * ospf6_lsreq_recv()
  * ospf6_lsupdate_recv()
  * ospf6_lsupdate_recv()
  * ospf6_lsack_recv()
  * ospf6_receive()

13 years agolib: spelling
Denis Ovsienko [Fri, 14 Oct 2011 16:56:19 +0000 (20:56 +0400)]
lib: spelling

13 years agolib: add sockopt helper for setting IPV6_V6ONLY and use it
David Lamparter [Sun, 4 Oct 2009 14:21:49 +0000 (16:21 +0200)]
lib: add sockopt helper for setting IPV6_V6ONLY and use it

getaddrinfo returns a list of socket parameters for listening. it
will contain both IPv4 and IPv6 listening sockets. unless we use
IPV6_V6ONLY on the IPv6 ones, only the socket listed first will
work. if the IPv4 one came first, the IPv6 one would get an
"Address in use" error.

this functionality was already present for bgpd and its listening
sockets. as it is needed for vtys as well, make it a common helper.

Conflicts:

lib/sockunion.c

13 years agolib: put route_types.txt to real use
David Lamparter [Tue, 15 Sep 2009 23:52:42 +0000 (01:52 +0200)]
lib: put route_types.txt to real use

this replaces most occurences of routing protocol lists by preprocessor
defines from route_types.h. the latter is autogenerated from
route_types.txt by a perl script (previously awk). adding a routing
protocol now is mostly a matter of changing route_types.txt and log.c.

Conflicts:

lib/route_types.awk

13 years agozebra: fix redistribution of new protocols
David Lamparter [Wed, 26 Aug 2009 22:27:40 +0000 (00:27 +0200)]
zebra: fix redistribution of new protocols

redistribute is currently limited to "known" protocols. there is no
reason for this limitation, so, remove it.

13 years agorib: default distance value for new protocols (v2)
David Lamparter [Wed, 26 Aug 2009 22:28:28 +0000 (00:28 +0200)]
rib: default distance value for new protocols (v2)

adding protocols and forgetting to update zebra_rib.c currently causes
a beyond end of array access for the default distance value. fix by
making 150 the default distance for unknown routing protocols.

150 is higher than all other IGPs but lower than iBGP (200)

13 years agobuild: fixup autoconf for cross-compiling (to OpenWRT)
David Lamparter [Wed, 16 Sep 2009 00:11:00 +0000 (02:11 +0200)]
build: fixup autoconf for cross-compiling (to OpenWRT)

MALLOC/REALLOC aren't used properly (no rpl_malloc), remove them

while at it, infer some sane ipforwarding method from the OS value.
(v2 on that, "==" is not a proper operator for standard "test")

13 years agozebra: set the interface link-layer socket address
Tom Goff [Wed, 25 Nov 2009 20:36:06 +0000 (20:36 +0000)]
zebra: set the interface link-layer socket address

* kernel_socket.c: (ifm_read) The reorganization from commit
  6fe70d1b35c189cb1e488b2c26551ba7baac6148 removed setting the
  interface link-layer socket address structure on routing socket
  platforms.  This restores saving the link-layer information because
  it might be used elsewhere: rtm_write() when no gateway is given,
  if_dump_vty() and rtadv_send_packet().

13 years agozebra: spelling
Denis Ovsienko [Mon, 5 Dec 2011 15:36:06 +0000 (19:36 +0400)]
zebra: spelling

13 years agobuild: delete .cvsignore files
Denis Ovsienko [Sat, 3 Dec 2011 13:45:17 +0000 (17:45 +0400)]
build: delete .cvsignore files

13 years agoospfd: spelling
Denis Ovsienko [Fri, 2 Dec 2011 16:02:40 +0000 (20:02 +0400)]
ospfd: spelling

13 years agolib: clearing zclient.c for some cases of building
Vyacheslav Trushkin [Wed, 30 Nov 2011 17:03:44 +0000 (21:03 +0400)]
lib: clearing zclient.c for some cases of building

lib/zclient.c: using of HAVE_TCP_ZEBRA in zclient_socket_*
definitions extended by else clause.

13 years agoquagga: option "-z" ("--socket <path>") added
Vyacheslav Trushkin [Fri, 25 Nov 2011 14:51:48 +0000 (18:51 +0400)]
quagga: option "-z" ("--socket <path>") added

All daemons modified to support custom path to zserv
socket.

lib: generalize a zclient connection

zclient_socket_connect added. zclient_socket and
zclient_socket_un were hidden under static expression.
"zclient_serv_path_set" modified.

13 years agoisisd: indent longopts array
Vyacheslav Trushkin [Fri, 25 Nov 2011 13:56:21 +0000 (17:56 +0400)]
isisd: indent longopts array

13 years agobgpd: implement 'match probability' in route-maps
Vyacheslav Trushkin [Tue, 22 Nov 2011 16:15:10 +0000 (20:15 +0400)]
bgpd: implement 'match probability' in route-maps

New clause 'match probability <percentage value>'
was added in route-maps (bgpd/bgp_routemap.c modified).

13 years agoospf6d: justify multicast group management
Vyacheslav Trushkin [Mon, 21 Nov 2011 16:26:39 +0000 (20:26 +0400)]
ospf6d: justify multicast group management

* ospf6_network.[ch]
  * ospf6_sso(): new function supersedes ospf6_join_allspfrouters(),
    ospf6_leave_allspfrouters(), ospf6_join_alldrouters() and
    ospf6_leave_alldrouters()
* ospf6_interface.c
  * ospf6_interface_state_change(): update respectively
  * interface_up(): ditto
  * interface_down(): ditto

13 years agoripngd: limit max of "timers basic" to 65535 as documented
Ulrich Weber [Thu, 17 Nov 2011 17:35:08 +0000 (21:35 +0400)]
ripngd: limit max of "timers basic" to 65535 as documented

and use VTY_GET_INTEGER_RANGE instead of calling strtoul

13 years agobgp: use VTY_GET_INTEGER_RANGE() in bgp_clear()
Ulrich Weber [Wed, 16 Nov 2011 15:32:12 +0000 (19:32 +0400)]
bgp: use VTY_GET_INTEGER_RANGE() in bgp_clear()

Second patch replaces "VTY_GET_LONG ("AS", as_ul, arg);"
by "VTY_GET_INTEGER_RANGE ("AS", as, arg, 1, BGP_AS4_MAX);"
as done in all other code, which parses AS numbers.

13 years agoospf6d: implement 'match interface' for route-maps
Vyacheslav Trushkin [Wed, 16 Nov 2011 10:22:03 +0000 (14:22 +0400)]
ospf6d: implement 'match interface' for route-maps

ospf6_routemap_rule_match_interface* was imported from ospfd
daemon with minor changes. new CLI options defined.

`ospf6_routemap_rule_match_interface' was changed to support
IPv6 (ospfv3) route's external information.

13 years agozebra: spelling
Denis Ovsienko [Mon, 5 Dec 2011 15:36:06 +0000 (19:36 +0400)]
zebra: spelling

13 years agobuild: delete .cvsignore files
Denis Ovsienko [Sat, 3 Dec 2011 13:45:17 +0000 (17:45 +0400)]
build: delete .cvsignore files

13 years agoospfd: spelling
Denis Ovsienko [Fri, 2 Dec 2011 16:02:40 +0000 (20:02 +0400)]
ospfd: spelling

13 years agolib: clearing zclient.c for some cases of building
Vyacheslav Trushkin [Wed, 30 Nov 2011 17:03:44 +0000 (21:03 +0400)]
lib: clearing zclient.c for some cases of building

lib/zclient.c: using of HAVE_TCP_ZEBRA in zclient_socket_*
definitions extended by else clause.

13 years agoquagga: option "-z" ("--socket <path>") added
Vyacheslav Trushkin [Fri, 25 Nov 2011 14:51:48 +0000 (18:51 +0400)]
quagga: option "-z" ("--socket <path>") added

All daemons modified to support custom path to zserv
socket.

lib: generalize a zclient connection

zclient_socket_connect added. zclient_socket and
zclient_socket_un were hidden under static expression.
"zclient_serv_path_set" modified.

13 years agoisisd: indent longopts array
Vyacheslav Trushkin [Fri, 25 Nov 2011 13:56:21 +0000 (17:56 +0400)]
isisd: indent longopts array

13 years agobgpd: implement 'match probability' in route-maps
Vyacheslav Trushkin [Tue, 22 Nov 2011 16:15:10 +0000 (20:15 +0400)]
bgpd: implement 'match probability' in route-maps

New clause 'match probability <percentage value>'
was added in route-maps (bgpd/bgp_routemap.c modified).

13 years agoospf6d: justify multicast group management
Vyacheslav Trushkin [Mon, 21 Nov 2011 16:26:39 +0000 (20:26 +0400)]
ospf6d: justify multicast group management

* ospf6_network.[ch]
  * ospf6_sso(): new function supersedes ospf6_join_allspfrouters(),
    ospf6_leave_allspfrouters(), ospf6_join_alldrouters() and
    ospf6_leave_alldrouters()
* ospf6_interface.c
  * ospf6_interface_state_change(): update respectively
  * interface_up(): ditto
  * interface_down(): ditto

13 years agoripngd: limit max of "timers basic" to 65535 as documented
Ulrich Weber [Thu, 17 Nov 2011 17:35:08 +0000 (21:35 +0400)]
ripngd: limit max of "timers basic" to 65535 as documented

and use VTY_GET_INTEGER_RANGE instead of calling strtoul

13 years agobgp: use VTY_GET_INTEGER_RANGE() in bgp_clear()
Ulrich Weber [Wed, 16 Nov 2011 15:32:12 +0000 (19:32 +0400)]
bgp: use VTY_GET_INTEGER_RANGE() in bgp_clear()

Second patch replaces "VTY_GET_LONG ("AS", as_ul, arg);"
by "VTY_GET_INTEGER_RANGE ("AS", as, arg, 1, BGP_AS4_MAX);"
as done in all other code, which parses AS numbers.

13 years agoospf6d: implement 'match interface' for route-maps
Vyacheslav Trushkin [Wed, 16 Nov 2011 10:22:03 +0000 (14:22 +0400)]
ospf6d: implement 'match interface' for route-maps

ospf6_routemap_rule_match_interface* was imported from ospfd
daemon with minor changes. new CLI options defined.

`ospf6_routemap_rule_match_interface' was changed to support
IPv6 (ospfv3) route's external information.

13 years agolib: fix SMUX compiler warnings
Stephen Hemminger [Tue, 6 Dec 2011 20:55:15 +0000 (00:55 +0400)]
lib: fix SMUX compiler warnings

Make progname a string, and cast when calling asn1.
Remove variable set but never used.