]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
12 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()

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

12 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

12 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

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

12 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)

12 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")

12 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().

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

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

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

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

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

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

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

12 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

12 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

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

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

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

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

12 years agoospf6d: fix compile warning from falling off end of main
Stephen Hemminger [Tue, 6 Dec 2011 21:25:46 +0000 (01:25 +0400)]
ospf6d: fix compile warning from falling off end of main

ospf6 main always calls ospf6_exit() which always calls exit.
Use attributes to tell GCC that this is ok.

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

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

12 years agovty_serv_sock_family unused
Stephen Hemminger [Thu, 10 Dec 2009 17:19:09 +0000 (17:19 +0000)]
vty_serv_sock_family unused

If the vty_serv_sock_addrinfo is being used, then vty_serv_sock_family
is unsed. Fix by adjusting ifdef/else/endif

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

12 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

12 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

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

12 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

12 years agobgpd: fix memory leak for extra attributes
Oleg A. Arkhangelsky [Sat, 3 Dec 2011 11:18:19 +0000 (15:18 +0400)]
bgpd: fix memory leak for extra attributes

this fixes commit b881c7074bb698aeb1b099175b325734fc6e44d2

12 years agodoc: rectify "match ip next-hop" in ripd (BZ#537)
Roderick Schertler [Wed, 16 Nov 2011 11:03:14 +0000 (15:03 +0400)]
doc: rectify "match ip next-hop" in ripd (BZ#537)

12 years agobgpd: remove unused function bgp_bind_address
David Lamparter [Tue, 2 Feb 2010 19:20:35 +0000 (20:20 +0100)]
bgpd: remove unused function bgp_bind_address

bgp_bind_address is replaced with sockunion_bind.

12 years agobgpd: fix update-source for IPv6 (BZ#548)
David Lamparter [Tue, 2 Feb 2010 19:18:23 +0000 (20:18 +0100)]
bgpd: fix update-source for IPv6 (BZ#548)

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.

12 years agolib: prefix2sockunion, prefix_common_bits helper functions
David Lamparter [Tue, 2 Feb 2010 19:16:35 +0000 (20:16 +0100)]
lib: prefix2sockunion, prefix_common_bits helper functions

prefix2sockunion converts a struct prefix* to a union sockunion *;
prefix_common_bits counts the number of common bits in the prefix's
address part.

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

12 years agobgpd: fix "nexthop-local unchanged" (BZ#350)
Dylan Hall [Thu, 27 Oct 2011 11:28:17 +0000 (15:28 +0400)]
bgpd: fix "nexthop-local unchanged" (BZ#350)

12 years agobgpd: justify capabilities for TOS setting
Chris Luke [Tue, 18 Oct 2011 13:26:51 +0000 (17:26 +0400)]
bgpd: justify capabilities for TOS setting

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

12 years agoospfd: improve fix to CVE-2011-3326 (BZ#586)
Thomas Ries [Thu, 27 Oct 2011 13:43:38 +0000 (17:43 +0400)]
ospfd: improve fix to CVE-2011-3326 (BZ#586)

Make ospf_flood() propagate error returned by ospf_lsa_install() further
to properly discard the malformed LSA, not just prevent the immediate
crash.

12 years agobgpd: revised fix to --dryrun (BZ#622)
Sergey Y. Afonin [Thu, 27 Oct 2011 13:01:11 +0000 (17:01 +0400)]
bgpd: revised fix to --dryrun (BZ#622)

12 years agobgpd: fix 2 more cases of length error reporting
Denis Ovsienko [Wed, 26 Oct 2011 15:34:30 +0000 (19:34 +0400)]
bgpd: fix 2 more cases of length error reporting

* bgp_attr.c (bgp_attr_originator_id, bgp_attr_cluster_list): provide
  required arguments to bgp_attr_malformed()

12 years agobgpd: check AGGREGATOR attr flags (BZ#678)
Denis Ovsienko [Sat, 22 Oct 2011 18:32:26 +0000 (22:32 +0400)]
bgpd: check AGGREGATOR attr flags (BZ#678)

* bgp_attr.c
  * bgp_attr_aggregator(): check Optional/Transitive flag bits

12 years agobgpd: fix more regressions in attr flag checks
Denis Ovsienko [Tue, 18 Oct 2011 10:20:04 +0000 (14:20 +0400)]
bgpd: fix more regressions in attr flag checks

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

12 years agobgpd: use bgp_attr_malformed()
Denis Ovsienko [Tue, 18 Oct 2011 09:55:07 +0000 (13:55 +0400)]
bgpd: use bgp_attr_malformed()

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

12 years agobgpd: add flag checks for MP_(UN)REACH_NLRI
Denis Ovsienko [Mon, 10 Oct 2011 17:08:33 +0000 (21:08 +0400)]
bgpd: add flag checks for MP_(UN)REACH_NLRI

* 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

12 years agobgpd: fix spelling of CLUSTER_LIST
Denis Ovsienko [Mon, 10 Oct 2011 12:52:20 +0000 (16:52 +0400)]
bgpd: fix spelling of CLUSTER_LIST

12 years agobgpd: check CLUSTER_LIST attribute flags
Denis Ovsienko [Fri, 30 Sep 2011 11:12:17 +0000 (15:12 +0400)]
bgpd: check CLUSTER_LIST attribute flags

* 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

12 years agobgpd: check ORIGINATOR_ID attribute flags
Denis Ovsienko [Fri, 30 Sep 2011 11:08:54 +0000 (15:08 +0400)]
bgpd: check ORIGINATOR_ID attribute flags

* 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

12 years agovtysh: [build] silence preprocessor errors in some cases
Dmitrij Tejblum [Tue, 27 Sep 2011 15:27:17 +0000 (19:27 +0400)]
vtysh: [build] silence preprocessor errors in some cases

* extract.pl.in: use configured CPPFLAGS in cpp invocation.

12 years agolib: compile even without IPV6_TCLASS
Denis Ovsienko [Wed, 12 Oct 2011 11:07:34 +0000 (15:07 +0400)]
lib: compile even without IPV6_TCLASS

12 years agoIPv6 transport class suppport
Stephen Hemminger [Wed, 28 Sep 2011 10:23:35 +0000 (14:23 +0400)]
IPv6 transport class suppport

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

12 years agobgpd: fix regression in improved attr flag checks
Denis Ovsienko [Wed, 12 Oct 2011 09:54:21 +0000 (13:54 +0400)]
bgpd: fix regression in improved attr flag checks

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

12 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

12 years agobgpd: improve attr length error handling (BZ#679)
Denis Ovsienko [Sat, 8 Oct 2011 09:54:48 +0000 (13:54 +0400)]
bgpd: improve attr length error handling (BZ#679)

* 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

12 years agobgpd: improve attr flags checks
Denis Ovsienko [Tue, 27 Sep 2011 11:47:25 +0000 (15:47 +0400)]
bgpd: improve attr flags checks

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

12 years agobgpd: ignore 4 bits of attribute flags byte
Denis Ovsienko [Tue, 27 Sep 2011 11:35:39 +0000 (15:35 +0400)]
bgpd: ignore 4 bits of attribute flags byte

12 years agobgpd: add missing "partial" flag checks (BZ#676)
Denis Ovsienko [Sat, 24 Sep 2011 09:20:43 +0000 (13:20 +0400)]
bgpd: add missing "partial" flag checks (BZ#676)

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

12 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

Conflicts:

bgpd/bgp_attr.c

12 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

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

(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

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

12 years agorelease: 0.99.20
Denis Ovsienko [Thu, 29 Sep 2011 12:55:23 +0000 (16:55 +0400)]
release: 0.99.20

12 years agoospfd: fix regression in recent commit
YAMAMOTO Shigeru [Wed, 28 Sep 2011 17:00:14 +0000 (21:00 +0400)]
ospfd: fix regression in recent commit

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

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

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

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

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

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

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

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

12 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

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

12 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

12 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

12 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

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

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

12 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

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

12 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

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

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

12 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

12 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

12 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

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

12 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)

12 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

12 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

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

12 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

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

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

12 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

12 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

12 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>
12 years agodoc: BGP route-flap dampening
Alexandre Chappuis [Sun, 11 Sep 2011 12:54:11 +0000 (16:54 +0400)]
doc: BGP route-flap dampening

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

12 years agorelease: 0.99.19
Denis Ovsienko [Mon, 26 Sep 2011 14:50:06 +0000 (18:50 +0400)]
release: 0.99.19

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