From 5b848048d7077f110123d226efbd9b4bcbb290cd Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Sat, 11 Mar 2017 12:48:55 +0700 Subject: [PATCH 01/12] snapcraft: Replace temporary logo with official FRR logo Signed-off-by: Martin Winter --- snapcraft/setup/gui/icon.png | Bin 21830 -> 35316 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/snapcraft/setup/gui/icon.png b/snapcraft/setup/gui/icon.png index e8f68e6ddea002f7a3f87ae71742444603640fb4..3ab3f8fc16745fbef3f5510059aebd3c11293b0c 100644 GIT binary patch delta 34459 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

3OpcLGmytGumflB;WQMVL1zNg%Og6CW&Nhe-~ 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 D8d3Un delta 20866 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 From 9cbae545f06d8cd8914c16d7d1f599c6004cc0c3 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 15 Mar 2017 09:25:43 -0400 Subject: [PATCH 02/12] zebra: Fix protobuf build on stable/2.0 When compiling w/ --enable-protobuf on stable/2.0 we were attempting to dereference the zvrf->vrf_id which got moved to zvrf->vrf->vrf_id. Signed-off-by: Donald Sharp --- zebra/zebra_fpm_protobuf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zebra/zebra_fpm_protobuf.c b/zebra/zebra_fpm_protobuf.c index 702c355f1a..cd88af134d 100644 --- a/zebra/zebra_fpm_protobuf.c +++ b/zebra/zebra_fpm_protobuf.c @@ -53,7 +53,7 @@ create_delete_route_message (qpb_allocator_t *allocator, rib_dest_t *dest, } fpm__delete_route__init(msg); - msg->vrf_id = rib_dest_vrf(dest)->vrf_id; + msg->vrf_id = rib_dest_vrf(dest)->vrf->vrf_id; qpb_address_family_set(&msg->address_family, rib_dest_af(dest)); @@ -159,7 +159,7 @@ create_add_route_message (qpb_allocator_t *allocator, rib_dest_t *dest, fpm__add_route__init(msg); - msg->vrf_id = rib_dest_vrf(dest)->vrf_id; + msg->vrf_id = rib_dest_vrf(dest)->vrf->vrf_id; qpb_address_family_set (&msg->address_family, rib_dest_af(dest)); From 358336ef366377b4a96c59efe2d6c14e881fa18c Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 15 Mar 2017 09:37:03 -0400 Subject: [PATCH 03/12] zebra: zebra_fpm_dt.c does not always need protobuf When compiling zebra_fpm_dt.c only pull in protobuf headers if we've turned it on. Signed-off-by: Donald Sharp --- zebra/zebra_fpm_dt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zebra/zebra_fpm_dt.c b/zebra/zebra_fpm_dt.c index 715e250a66..7b4e1b90dc 100644 --- a/zebra/zebra_fpm_dt.c +++ b/zebra/zebra_fpm_dt.c @@ -50,8 +50,10 @@ #include "qpb/qpb_allocator.h" #include "qpb/linear_allocator.h" +#ifdef HAVE_PROTOBUF #include "qpb/qpb.h" #include "fpm/fpm.pb-c.h" +#endif /* * Externs. From d1c2443dc7990f57c8e777bd8da8f259c7414554 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Fri, 17 Mar 2017 20:43:27 -0700 Subject: [PATCH 04/12] snapcraft: Add missing snapcraft files from dist (make dist) archive Signed-off-by: Martin Winter --- snapcraft/Makefile.am | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/snapcraft/Makefile.am b/snapcraft/Makefile.am index 15813be72f..d32e18d071 100644 --- a/snapcraft/Makefile.am +++ b/snapcraft/Makefile.am @@ -1,11 +1,5 @@ EXTRA_DIST = snapcraft.yaml \ - scripts/Makefile scripts/zebra-service scripts/bgpd-service \ - scripts/isisd-service scripts/ripd-service scripts/ripngd-service \ - scripts/ospf6d-service scripts/ospfd-service \ - scripts/isisd-service scripts/pimd-service \ - scripts/ldpd-service \ - defaults/bgpd.conf.default defaults/isisd.conf.default \ - defaults/ospf6d.conf.default defaults/ospfd.conf.default \ - defaults/pimd.conf.default defaults/zebra.conf.default \ - defaults/ripd.conf.default defaults/ripngd.conf.default \ - defaults/ldpd.conf.default defaults/vtysh.conf.default + README.* \ + scripts/Makefile scripts/*-service \ + defaults/*.conf.default \ + helpers setup From 567dd75c077b36f0001d771bb287ae55c9312363 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Fri, 17 Mar 2017 20:50:09 -0700 Subject: [PATCH 05/12] snapcraft: Change setup/ to snap/ directory based on new snap format DEPRECATED: Assets in 'setup/gui' should now be placed in 'snap/gui'. See http://snapcraft.io/docs/deprecation-notices/dn3 for more information. Signed-off-by: Martin Winter --- snapcraft/Makefile.am | 2 +- snapcraft/{setup => snap}/gui/icon.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename snapcraft/{setup => snap}/gui/icon.png (100%) diff --git a/snapcraft/Makefile.am b/snapcraft/Makefile.am index d32e18d071..8cc4e0b4c6 100644 --- a/snapcraft/Makefile.am +++ b/snapcraft/Makefile.am @@ -2,4 +2,4 @@ EXTRA_DIST = snapcraft.yaml \ README.* \ scripts/Makefile scripts/*-service \ defaults/*.conf.default \ - helpers setup + helpers snap diff --git a/snapcraft/setup/gui/icon.png b/snapcraft/snap/gui/icon.png similarity index 100% rename from snapcraft/setup/gui/icon.png rename to snapcraft/snap/gui/icon.png From 02fe6f865ebed8d7a20e32689c084bbe0001543a Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Mon, 23 Jan 2017 20:52:13 +0100 Subject: [PATCH 06/12] COMMUNITY.md: update CodingStyle & branching Also add a note that this is documentation, not law. Signed-off-by: David Lamparter --- COMMUNITY.md | 93 +++++- doc/git_branches.svg | 721 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 799 insertions(+), 15 deletions(-) diff --git a/COMMUNITY.md b/COMMUNITY.md index 52777da968..704c47a95e 100644 --- a/COMMUNITY.md +++ b/COMMUNITY.md @@ -2,6 +2,16 @@ [TOC] +## General note on this document + +This document is "descriptive/post-factual" in that it documents pratices that +are in use; it is not "definitive/pre-factual" in prescribing practices. + +This means that when a procedure changes, it is agreed upon, then put into +practice, and then documented here. If this document doesn't match reality, +it's the document that needs to be updated, not reality. + + ## Git Structure The master Git for PROJECT resides on Github at @@ -10,20 +20,21 @@ The master Git for PROJECT resides on Github at ![git branches continually merging to the left from 3 lanes; float-right](doc/git_branches.svg "git branch mechanics") -There are 3 main branches for development and a release branch for each +There is one main branch for development and a release branch for each major release. -New contributions are done against the head of the Develop branch. The CI +New contributions are done against the head of the master branch. The CI systems will pick up the Github Pull Requests or the new patch from -Patchwork, run some basic build and functional tests and will merge them -into the branch automatically on success. - -Code on the develop branch will then be further tested and reviewed by the -community and merged to master on a regular interval. +Patchwork, run some basic build and functional tests. For each major release (1.0, 1.1 etc) a new release branch is created based on the master. +There was an attempt to use a "develop" branch automatically maintained by +the CI system. This is not currently in active use, though the system is +operational. If the "develop" branch is in active use and this paragraph +is still here, this document obviously wasn't updated. + ## Programming language, Tools and Libraries @@ -250,16 +261,72 @@ Portions: ### Code styling / format -GNU coding standards apply. Indentation follows the result of invoking GNU -indent (as of 2.2.8a) with the `-nut -nfc1` arguments. +Coding style standards in FRR vary depending on location. Pre-existing +code uses GNU coding standards. New code may use Linux kernel coding style. + +GNU coding style apply to the following parts: + +* lib/ +* zebra/ +* bgpd/ +* ospfd/ +* ospf6d/ +* isisd/ +* ripd/ +* ripngd/ +* vtysh/ + +Linux kernel coding style applies to: + +* nhrpd/ +* watchfrr/ +* pimd/ +* lib/{checksum,hook,imsg-buffer,imsg,libfrr,md5,module,monotime,queue}.[ch] + +BSD coding style applies to: + +* ldpd/ + +**Whitespace changes in untouched parts of the code are not acceptable in +patches that change actual code.** To change/fix formatting issues, please +create a separate patch that only does formatting changes and nothing else. + +It is acceptable to rewrap entire files to Linux kernel style, but this +**MUST** come as a separate patch that does nothing other than this +reformatting. + + +#### GNU style + +For GNU coding style, Indentation follows the result of invoking GNU indent: ``` indent -nut -nfc1 file_for_submission.c ``` -Please don’t reformat existing files (or only sections modified by your -changes), even if they don’t follow the standard. This makes it very hard to -highlight the changes +Originally, tabs were used instead of spaces, with tabs are every 8 columns. +However, tab interoperability issues mean space characters are now preferred for +new changes. We generally only clean up whitespace when code is unmaintainable +due to whitespace issues, to minimise merging conflicts. + + +#### Linux kernel & BSD style + +These styles are documented externally: + +* [https://www.kernel.org/doc/Documentation/CodingStyle](https://www.kernel.org/doc/Documentation/CodingStyle). +* [http://man.openbsd.org/style](http://man.openbsd.org/style) + +They are relatively similar but differ in details. + +pimd deviates from Linux kernel style in using 2 spaces for indentation, with +Tabs replacing 8 spaces, as well as adding a line break between `}` and `else`. +It is acceptable to convert indentation in pimd/ to Linux kernel style, but +please convert an entire file at a time. (Rationale: apart from 2-space +indentation, the styles are sufficiently close to not upset when mixed.) + +Unlike GNU style, these styles use tabs, not spaces. + ### Compile-Time conditional code @@ -307,4 +374,4 @@ of their debugs. CLI's are a complicated ugly beast. Additions or changes to the CLI should use a DEFUN to encapsulate one setting as much as is possible. Additionally as new DEFUN's are added to the system, documentation -should be provided for the new commands. \ No newline at end of file +should be provided for the new commands. diff --git a/doc/git_branches.svg b/doc/git_branches.svg index 3943eeacc8..0c2c96e39e 100644 --- a/doc/git_branches.svg +++ b/doc/git_branches.svg @@ -1,3 +1,720 @@ - -1.0ReleaseBranchMaster(Stable)Develop1.1ReleaseBranchVersion 1.0.a1Version 1.1.a1Version 1.1.a2Version 1.1.b1Patch Email (Patchwork)Github Pull RequestGithub Pull RequestPatch Email (Patchwork)Patch Email (Patchwork)Github Pull RequestGithub Pull RequestGithub Pull RequestPatch Email (Patchwork)Github Pull RequestGithub Pull RequestGithub Pull RequestGithub Pull RequestGithub Pull RequestGithub Pull RequestVersion 1.0.a2Version 1.0.b1Version 1.0.0Version 1.1.0Version 1.1.1Version 1.1.2 + + + + + image/svg+xml + + + + + + + + + + + + + + + 1.0ReleaseBranch + + + + + + + + + + Master(Stable) + + + + + + + + + 1.1ReleaseBranch + Version 1.0.a1 + Version 1.1.a1 + Version 1.1.a2 + + + + + Version 1.1.b1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Patch Email (Patchwork) + Github Pull Request + Github Pull Request + Patch Email (Patchwork) + Patch Email (Patchwork) + Github Pull Request + Github Pull Request + Github Pull Request + Patch Email (Patchwork) + Github Pull Request + Github Pull Request + Github Pull Request + Github Pull Request + Github Pull Request + Github Pull Request + + + + + + + + + Version 1.0.a2 + Version 1.0.b1 + Version 1.0.0 + Version 1.1.0 + Version 1.1.1 + Version 1.1.2 + + + + + + + + + + + + + + + + + + From 1ea8289e2abd1a020310d6cab8dfc05cdd195d5c Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 28 Mar 2017 18:23:47 +0200 Subject: [PATCH 07/12] tests: format TestRefMismatch more readable Signed-off-by: Christian Franke --- tests/helpers/python/frrtest.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/helpers/python/frrtest.py b/tests/helpers/python/frrtest.py index 20c854f66c..21944bcf98 100644 --- a/tests/helpers/python/frrtest.py +++ b/tests/helpers/python/frrtest.py @@ -27,6 +27,7 @@ import sys import re import inspect import os +import difflib import frrsix @@ -154,7 +155,18 @@ class TestMultiOut(_TestMultiOut): # class TestRefMismatch(Exception): - pass + def __init__(self, _test, outtext, reftext): + self.outtext = outtext.decode('utf8') if type(outtext) is bytes else outtext + self.reftext = reftext.decode('utf8') if type(reftext) is bytes else reftext + + def __str__(self): + rv = 'Expected output and actual output differ:\n' + rv += '\n'.join(difflib.unified_diff(self.reftext.splitlines(), + self.outtext.splitlines(), + 'outtext', 'reftext', + lineterm='')) + return rv + class TestExitNonzero(Exception): pass From 8efe88eacfcbffcefd274238105b932dff76803a Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Thu, 9 Mar 2017 19:00:19 +0100 Subject: [PATCH 08/12] *: track version & "defaults" in configs [CF]: Move default name to autoconf and update tests Signed-off-by: Christian Franke --- Makefile.am | 2 + bgpd/bgpd.c | 36 ++++++-- bgpd/bgpd.h | 8 +- configure.ac | 6 ++ defaults.h | 54 +++++++++++ lib/command.c | 91 +++++++++++-------- lib/version.h.in | 1 + ospf6d/ospf6_top.c | 7 +- ospfd/ospf_vty.c | 5 +- ospfd/ospfd.c | 3 + tests/lib/cli/.gitignore | 1 + .../{test_cli.refout => test_cli.refout.in} | 6 ++ vtysh/vtysh_config.c | 1 + 13 files changed, 170 insertions(+), 51 deletions(-) create mode 100644 defaults.h create mode 100644 tests/lib/cli/.gitignore rename tests/lib/cli/{test_cli.refout => test_cli.refout.in} (93%) diff --git a/Makefile.am b/Makefile.am index 63dedeac06..3e73bd0cdd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,3 +16,5 @@ EXTRA_DIST = aclocal.m4 SERVICES REPORTING-BUGS \ tools/zebra.el tools/multiple-bgpd.sh ACLOCAL_AMFLAGS = -I m4 + +noinst_HEADERS = defaults.h diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 5280731234..86133cd763 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -2889,10 +2889,18 @@ bgp_create (as_t *as, const char *name, enum bgp_instance_type inst_type) bgp->stalepath_time = BGP_DEFAULT_STALEPATH_TIME; bgp->dynamic_neighbors_limit = BGP_DYNAMIC_NEIGHBORS_LIMIT_DEFAULT; bgp->dynamic_neighbors_count = 0; +#if DFLT_BGP_IMPORT_CHECK bgp_flag_set (bgp, BGP_FLAG_IMPORT_CHECK); +#endif +#if DFLT_BGP_SHOW_HOSTNAME bgp_flag_set (bgp, BGP_FLAG_SHOW_HOSTNAME); +#endif +#if DFLT_BGP_LOG_NEIGHBOR_CHANGES bgp_flag_set (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES); +#endif +#if DFLT_BGP_DETERMINISTIC_MED bgp_flag_set (bgp, BGP_FLAG_DETERMINISTIC_MED); +#endif bgp->addpath_tx_id = BGP_ADDPATH_TX_ID_FOR_DEFAULT_ORIGINATE; bgp->as = *as; @@ -7263,8 +7271,11 @@ bgp_config_write (struct vty *vty) inet_ntoa (bgp->router_id_static), VTY_NEWLINE); /* BGP log-neighbor-changes. */ - if (!bgp_flag_check (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES)) - vty_out (vty, " no bgp log-neighbor-changes%s", VTY_NEWLINE); + if (!!bgp_flag_check (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES) + != DFLT_BGP_LOG_NEIGHBOR_CHANGES) + vty_out (vty, " %sbgp log-neighbor-changes%s", + bgp_flag_check (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES) ? "" : "no ", + VTY_NEWLINE); /* BGP configuration. */ if (bgp_flag_check (bgp, BGP_FLAG_ALWAYS_COMPARE_MED)) @@ -7280,8 +7291,11 @@ bgp_config_write (struct vty *vty) bgp->default_local_pref, VTY_NEWLINE); /* BGP default show-hostname */ - if (!bgp_flag_check(bgp, BGP_FLAG_SHOW_HOSTNAME)) - vty_out (vty, " no bgp default show-hostname%s", VTY_NEWLINE); + if (!!bgp_flag_check(bgp, BGP_FLAG_SHOW_HOSTNAME) + != DFLT_BGP_SHOW_HOSTNAME) + vty_out (vty, " %sbgp default show-hostname%s", + bgp_flag_check (bgp, BGP_FLAG_SHOW_HOSTNAME) ? "" : "no ", + VTY_NEWLINE); /* BGP default subgroup-pkt-queue-max. */ if (bgp->default_subgroup_pkt_queue_max != BGP_DEFAULT_SUBGROUP_PKT_QUEUE_MAX) @@ -7324,8 +7338,11 @@ bgp_config_write (struct vty *vty) vty_out (vty, " bgp enforce-first-as%s", VTY_NEWLINE); /* BGP deterministic-med. */ - if (!bgp_flag_check (bgp, BGP_FLAG_DETERMINISTIC_MED)) - vty_out (vty, " no bgp deterministic-med%s", VTY_NEWLINE); + if (!!bgp_flag_check (bgp, BGP_FLAG_DETERMINISTIC_MED) + != DFLT_BGP_DETERMINISTIC_MED) + vty_out (vty, " %sbgp deterministic-med%s", + bgp_flag_check (bgp, BGP_FLAG_DETERMINISTIC_MED) ? "" : "no ", + VTY_NEWLINE); /* BGP update-delay. */ bgp_config_write_update_delay (vty, bgp); @@ -7397,8 +7414,11 @@ bgp_config_write (struct vty *vty) } /* BGP network import check. */ - if (!bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) - vty_out (vty, " no bgp network import-check%s", VTY_NEWLINE); + if (!!bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) + != DFLT_BGP_IMPORT_CHECK) + vty_out (vty, " %sbgp network import-check%s", + bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) ? "" : "no ", + VTY_NEWLINE); /* BGP flag dampening. */ if (CHECK_FLAG (bgp->af_flags[AFI_IP][SAFI_UNICAST], diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 510082fdc2..f1e5d7b0ad 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -29,6 +29,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "sockunion.h" #include "routemap.h" #include "linklist.h" +#include "defaults.h" #include "bgp_memory.h" #define BGP_MAX_HOSTNAME 64 /* Linux max, is larger than most other sys */ @@ -1052,12 +1053,13 @@ struct bgp_nlri #define BGP_EVENTS_MAX 15 /* BGP timers default value. */ +/* note: the DFLT_ ones depend on compile-time "defaults" selection */ #define BGP_INIT_START_TIMER 1 -#define BGP_DEFAULT_HOLDTIME 9 -#define BGP_DEFAULT_KEEPALIVE 3 +#define BGP_DEFAULT_HOLDTIME DFLT_BGP_HOLDTIME +#define BGP_DEFAULT_KEEPALIVE DFLT_BGP_KEEPALIVE #define BGP_DEFAULT_EBGP_ROUTEADV 0 #define BGP_DEFAULT_IBGP_ROUTEADV 0 -#define BGP_DEFAULT_CONNECT_RETRY 10 +#define BGP_DEFAULT_CONNECT_RETRY DFLT_BGP_TIMERS_CONNECT /* BGP default local preference. */ #define BGP_DEFAULT_LOCAL_PREF 100 diff --git a/configure.ac b/configure.ac index 6ff64d086a..9fc3cb72f3 100755 --- a/configure.ac +++ b/configure.ac @@ -346,7 +346,12 @@ AC_SUBST(MPLS_METHOD) if test "${enable_cumulus}" = "yes" ; then AC_DEFINE(HAVE_CUMULUS,,Compile Special Cumulus Code in) + DFLT_NAME="datacenter" +else + DFLT_NAME="traditional" fi +AC_SUBST(DFLT_NAME) +AC_DEFINE_UNQUOTED(DFLT_NAME,["$DFLT_NAME"], Name of the configuration default set) if test "${enable_shell_access}" = "yes"; then AC_DEFINE(HAVE_SHELL_ACCESS,,Allow user to use ssh/telnet/bash) @@ -1599,6 +1604,7 @@ AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile snapcraft/Makefile snapcraft/snapcraft.yaml lib/version.h + tests/lib/cli/test_cli.refout doc/defines.texi doc/bgpd.8 doc/isisd.8 diff --git a/defaults.h b/defaults.h new file mode 100644 index 0000000000..e43fb2aa1a --- /dev/null +++ b/defaults.h @@ -0,0 +1,54 @@ +/* + * FRR switchable defaults. + * Copyright (C) 2017 David Lamparter for NetDEF, Inc. + * + * This file is part of FreeRangeRouting (FRR). + * + * FRR is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2, or (at your option) any later version. + * + * FRR is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along + * with FRR; see the file COPYING. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _FRR_DEFAULTS_H +#define _FRR_DEFAULTS_H + +#include "config.h" + +#ifdef HAVE_CUMULUS + +#define DFLT_BGP_IMPORT_CHECK 1 +#define DFLT_BGP_TIMERS_CONNECT 10 +#define DFLT_BGP_HOLDTIME 9 +#define DFLT_BGP_KEEPALIVE 3 +#define DFLT_BGP_LOG_NEIGHBOR_CHANGES 1 +#define DFLT_BGP_SHOW_HOSTNAME 1 +#define DFLT_BGP_DETERMINISTIC_MED 1 + +#define DFLT_OSPF_LOG_ADJACENCY_CHANGES 1 +#define DFLT_OSPF6_LOG_ADJACENCY_CHANGES 1 + +#else /* !HAVE_CUMULUS */ + +#define DFLT_BGP_IMPORT_CHECK 0 +#define DFLT_BGP_TIMERS_CONNECT 120 +#define DFLT_BGP_HOLDTIME 180 +#define DFLT_BGP_KEEPALIVE 60 +#define DFLT_BGP_LOG_NEIGHBOR_CHANGES 0 +#define DFLT_BGP_SHOW_HOSTNAME 0 +#define DFLT_BGP_DETERMINISTIC_MED 0 + +#define DFLT_OSPF_LOG_ADJACENCY_CHANGES 0 +#define DFLT_OSPF6_LOG_ADJACENCY_CHANGES 0 + +#endif /* !HAVE_CUMULUS */ + +#endif /* _FRR_DEFAULTS_H */ diff --git a/lib/command.c b/lib/command.c index c9b261cf2a..919e27ada4 100644 --- a/lib/command.c +++ b/lib/command.c @@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA. */ #include "workqueue.h" #include "vrf.h" #include "qobj.h" +#include "defaults.h" DEFINE_MTYPE( LIB, HOST, "Host config") DEFINE_MTYPE( LIB, STRVEC, "String vector") @@ -3082,6 +3083,23 @@ DEFUN (show_version, return CMD_SUCCESS; } +/* "Set" version ... ignore version tags */ +DEFUN (frr_version_defaults, + frr_version_defaults_cmd, + "frr (version|defaults) .LINE", + "FreeRangeRouting global parameters\n" + "version configuration was written by\n" + "set of configuration defaults used\n" + "version string\n") +{ + if (vty->type == VTY_TERM || vty->type == VTY_SHELL) + /* only print this when the user tries to do run it */ + vty_out (vty, "%% NOTE: This command currently does nothing.%s" + "%% It is written to the configuration for future reference.%s", + VTY_NEWLINE, VTY_NEWLINE); + return CMD_SUCCESS; +} + /* Help display function for all node. */ DEFUN (config_help, config_help_cmd, @@ -3125,6 +3143,37 @@ DEFUN (config_list, return CMD_SUCCESS; } +static void +vty_write_config (struct vty *vty) +{ + size_t i; + struct cmd_node *node; + + if (vty->type == VTY_TERM) + { + vty_out (vty, "%sCurrent configuration:%s", VTY_NEWLINE, + VTY_NEWLINE); + vty_out (vty, "!%s", VTY_NEWLINE); + } + + vty_out (vty, "frr version %s%s", FRR_VER_SHORT, VTY_NEWLINE); + vty_out (vty, "frr defaults %s%s", DFLT_NAME, VTY_NEWLINE); + vty_out (vty, "!%s", VTY_NEWLINE); + + for (i = 0; i < vector_active (cmdvec); i++) + if ((node = vector_slot (cmdvec, i)) && node->func + && (node->vtysh || vty->type != VTY_SHELL)) + { + if ((*node->func) (vty)) + vty_out (vty, "!%s", VTY_NEWLINE); + } + + if (vty->type == VTY_TERM) + { + vty_out (vty, "end%s",VTY_NEWLINE); + } +} + /* Write current configuration into file. */ DEFUN (config_write_file, config_write_file_cmd, @@ -3132,9 +3181,7 @@ DEFUN (config_write_file, "Write running configuration to memory, network, or terminal\n" "Write to configuration file\n") { - unsigned int i; int fd, dirfd; - struct cmd_node *node; char *config_file, *slash; char *config_file_tmp = NULL; char *config_file_sav = NULL; @@ -3205,13 +3252,7 @@ DEFUN (config_write_file, vty_out (file_vty, "!\n! Zebra configuration saved from vty\n! "); vty_time_print (file_vty, 1); vty_out (file_vty, "!\n"); - - for (i = 0; i < vector_active (cmdvec); i++) - if ((node = vector_slot (cmdvec, i)) && node->func) - { - if ((*node->func) (file_vty)) - vty_out (file_vty, "!\n"); - } + vty_write_config (file_vty); vty_close (file_vty); if (stat(config_file, &conf_stat) >= 0) @@ -3277,35 +3318,8 @@ DEFUN (config_write_terminal, "Write running configuration to memory, network, or terminal\n" "Write to terminal\n") { - unsigned int i; - struct cmd_node *node; - - if (host.noconfig) - return CMD_SUCCESS; - - if (vty->type == VTY_SHELL_SERV) - { - for (i = 0; i < vector_active (cmdvec); i++) - if ((node = vector_slot (cmdvec, i)) && node->func && node->vtysh) - { - if ((*node->func) (vty)) - vty_out (vty, "!%s", VTY_NEWLINE); - } - } - else - { - vty_out (vty, "%sCurrent configuration:%s", VTY_NEWLINE, - VTY_NEWLINE); - vty_out (vty, "!%s", VTY_NEWLINE); - - for (i = 0; i < vector_active (cmdvec); i++) - if ((node = vector_slot (cmdvec, i)) && node->func) - { - if ((*node->func) (vty)) - vty_out (vty, "!%s", VTY_NEWLINE); - } - vty_out (vty, "end%s",VTY_NEWLINE); - } + if (!host.noconfig) + vty_write_config (vty); return CMD_SUCCESS; } @@ -4301,6 +4315,7 @@ cmd_init (int terminal) install_element (CONFIG_NODE, &hostname_cmd); install_element (CONFIG_NODE, &no_hostname_cmd); + install_element (CONFIG_NODE, &frr_version_defaults_cmd); if (terminal > 0) { diff --git a/lib/version.h.in b/lib/version.h.in index adc8278189..6c78bd0544 100644 --- a/lib/version.h.in +++ b/lib/version.h.in @@ -41,6 +41,7 @@ #define FRR_FULL_NAME "FreeRangeRouting" #define FRR_VERSION "@PACKAGE_VERSION@" GIT_SUFFIX +#define FRR_VER_SHORT "@PACKAGE_VERSION@" #define FRR_BUG_ADDRESS "@PACKAGE_BUGREPORT@" #define FRR_COPYRIGHT "Copyright 1996-2005 Kunihiro Ishiguro, et al." #define FRR_CONFIG_ARGS "@CONFIG_ARGS@" diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c index 3d632b644e..f2d14ef09c 100644 --- a/ospf6d/ospf6_top.c +++ b/ospf6d/ospf6_top.c @@ -29,6 +29,7 @@ #include "table.h" #include "thread.h" #include "command.h" +#include "defaults.h" #include "ospf6_proto.h" #include "ospf6_message.h" @@ -158,7 +159,9 @@ ospf6_create (void) o->distance_table = route_table_init (); /* Enable "log-adjacency-changes" */ +#if DFLT_OSPF6_LOG_ADJACENCY_CHANGES SET_FLAG(o->config_flags, OSPF6_LOG_ADJACENCY_CHANGES); +#endif return o; } @@ -1132,8 +1135,10 @@ config_write_ospf6 (struct vty *vty) { if (CHECK_FLAG(ospf6->config_flags, OSPF6_LOG_ADJACENCY_DETAIL)) vty_out(vty, " log-adjacency-changes detail%s", VTY_NEWLINE); + else if (!DFLT_OSPF6_LOG_ADJACENCY_CHANGES) + vty_out(vty, " log-adjacency-changes%s", VTY_NEWLINE); } - else + else if (DFLT_OSPF6_LOG_ADJACENCY_CHANGES) { vty_out(vty, " no log-adjacency-changes%s", VTY_NEWLINE); } diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 2c3aaa6808..5faf2850d9 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -33,6 +33,7 @@ #include "plist.h" #include "log.h" #include "zclient.h" +#include "defaults.h" #include "ospfd/ospfd.h" #include "ospfd/ospf_asbr.h" @@ -9873,8 +9874,10 @@ ospf_config_write (struct vty *vty) { if (CHECK_FLAG(ospf->config, OSPF_LOG_ADJACENCY_DETAIL)) vty_out(vty, " log-adjacency-changes detail%s", VTY_NEWLINE); + else if (!DFLT_OSPF_LOG_ADJACENCY_CHANGES) + vty_out(vty, " log-adjacency-changes%s", VTY_NEWLINE); } - else + else if (DFLT_OSPF_LOG_ADJACENCY_CHANGES) { vty_out(vty, " no log-adjacency-changes%s", VTY_NEWLINE); } diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index b83093db3c..53b81c6248 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -35,6 +35,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "plist.h" #include "sockopt.h" #include "bfd.h" +#include "defaults.h" #include "ospfd/ospfd.h" #include "ospfd/ospf_network.h" @@ -291,7 +292,9 @@ ospf_new (u_short instance) new->write_oi_count = OSPF_WRITE_INTERFACE_COUNT_DEFAULT; /* Enable "log-adjacency-changes" */ +#if DFLT_OSPF_LOG_ADJACENCY_CHANGES SET_FLAG(new->config, OSPF_LOG_ADJACENCY_CHANGES); +#endif return new; } diff --git a/tests/lib/cli/.gitignore b/tests/lib/cli/.gitignore new file mode 100644 index 0000000000..682e95faa1 --- /dev/null +++ b/tests/lib/cli/.gitignore @@ -0,0 +1 @@ +/test_cli.refout diff --git a/tests/lib/cli/test_cli.refout b/tests/lib/cli/test_cli.refout.in similarity index 93% rename from tests/lib/cli/test_cli.refout rename to tests/lib/cli/test_cli.refout.in index 7da5494827..26f7f09a0d 100644 --- a/tests/lib/cli/test_cli.refout +++ b/tests/lib/cli/test_cli.refout.in @@ -270,6 +270,9 @@ test# show run Current configuration: ! +frr version @PACKAGE_VERSION@ +frr defaults @DFLT_NAME@ +! hostname test ! ! @@ -282,6 +285,9 @@ foohost(config)# do show run Current configuration: ! +frr version @PACKAGE_VERSION@ +frr defaults @DFLT_NAME@ +! hostname foohost ! ! diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c index e60e9c091f..94c4042dd4 100644 --- a/vtysh/vtysh_config.c +++ b/vtysh/vtysh_config.c @@ -274,6 +274,7 @@ vtysh_config_parse_line (const char *line) { if (strncmp (line, "log", strlen ("log")) == 0 || strncmp (line, "hostname", strlen ("hostname")) == 0 + || strncmp (line, "frr", strlen ("frr")) == 0 ) config_add_line_uniq (config_top, line); else From 447a8fe92ebf4615ba1f6c1259af9aa64f0d21a6 Mon Sep 17 00:00:00 2001 From: Lou Berger Date: Thu, 30 Mar 2017 14:22:35 -0400 Subject: [PATCH 09/12] Rename: FreeRangeRouting FRRouting Signed-off-by: Lou Berger --- ChangeLog | 2 +- REPORTING-BUGS | 6 +++--- configure.ac | 6 +++--- defaults.h | 2 +- doc/Building_FRR_on_CentOS6.md | 2 +- doc/Building_FRR_on_CentOS7.md | 2 +- doc/Building_FRR_on_Debian8.md | 2 +- doc/Building_FRR_on_Fedora24.md | 2 +- lib/command.c | 2 +- lib/version.h.in | 2 +- ospfd/ospf_dump_api.c | 2 +- ospfd/ospf_dump_api.h | 2 +- redhat/README.rpm_build.md | 2 +- redhat/frr.spec.in | 12 ++++++------ snapcraft/README.snap_build.md | 10 +++++----- snapcraft/README.usage.md | 10 +++++----- snapcraft/snapcraft.yaml.in | 6 +++--- solaris/README.txt | 12 ++++++------ solaris/depend.daemons.in | 2 +- solaris/depend.dev.in | 2 +- solaris/depend.libs.in | 2 +- solaris/depend.smf.in | 2 +- solaris/frr.init.in | 12 ++++++------ solaris/frr.xml.in | 18 +++++++++--------- tests/helpers/python/frrtest.py | 2 +- 25 files changed, 62 insertions(+), 62 deletions(-) diff --git a/ChangeLog b/ChangeLog index a201bb6819..6793fc25d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -ChangeLog information for FreeRangeRouting is for now recorded in source-code +ChangeLog information for FRRouting is for now recorded in source-code management system. Please see: http://www.freerangerouting.org/ diff --git a/REPORTING-BUGS b/REPORTING-BUGS index ea36ff5eed..a37f5c2829 100644 --- a/REPORTING-BUGS +++ b/REPORTING-BUGS @@ -1,5 +1,5 @@ -This file describes the procedure for reporting FreeRangeRouting bugs. You are not -obliged to follow this format, but it would be great help for FreeRangeRouting developers +This file describes the procedure for reporting FRRouting bugs. You are not +obliged to follow this format, but it would be great help for FRRouting developers if you report a bug as described below. Bugs submitted with woefully incomplete information may be summarily @@ -13,7 +13,7 @@ Report bugs on Github Issue Tracker at https://github.com/freerangerouting/frr/issues Please supply the following information: -1. Your FreeRangeRouting version or if it is from git then the commit reference. +1. Your FRRouting version or if it is from git then the commit reference. Please try to report bugs against git master or the latest release. 2. FRR daemons you run e.g. bgpd or ripd and full name of your OS. Any specific options you compiled Quagga with. diff --git a/configure.ac b/configure.ac index 9fc3cb72f3..cbddaa63fa 100755 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ ## -## Configure template file for FreeRangeRouting. +## Configure template file for FRRouting. ## autoconf will generate configure script. ## ## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro @@ -9,7 +9,7 @@ AC_PREREQ(2.60) AC_INIT(frr, 2.0-rc2, [https://github.com/freerangerouting/frr/issues]) PACKAGE_URL="https://freerangerouting.org/" -PACKAGE_FULLNAME="FreeRangeRouting" +PACKAGE_FULLNAME="FRRouting" AC_SUBST(PACKAGE_FULLNAME) CONFIG_ARGS="$ac_configure_args" @@ -1639,7 +1639,7 @@ AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl]) AC_OUTPUT echo " -FreeRangeRouting configuration +FRRouting configuration ------------------------------ FRR version : ${PACKAGE_VERSION} host operating system : ${host_os} diff --git a/defaults.h b/defaults.h index e43fb2aa1a..57e35f3ce6 100644 --- a/defaults.h +++ b/defaults.h @@ -2,7 +2,7 @@ * FRR switchable defaults. * Copyright (C) 2017 David Lamparter for NetDEF, Inc. * - * This file is part of FreeRangeRouting (FRR). + * This file is part of FRRouting (FRR). * * FRR is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software diff --git a/doc/Building_FRR_on_CentOS6.md b/doc/Building_FRR_on_CentOS6.md index ccb07fb2ac..1ff4748230 100644 --- a/doc/Building_FRR_on_CentOS6.md +++ b/doc/Building_FRR_on_CentOS6.md @@ -69,7 +69,7 @@ any packages** sudo groupadd -g 92 frr sudo groupadd -r -g 85 frrvt sudo useradd -u 92 -g 92 -M -r -G frrvt -s /sbin/nologin \ - -c "FRR FreeRangeRouting suite" -d /var/run/frr frr + -c "FRR FRRouting suite" -d /var/run/frr frr ### Download Source, configure and compile it (You may prefer different options on configure statement. These are just diff --git a/doc/Building_FRR_on_CentOS7.md b/doc/Building_FRR_on_CentOS7.md index cd10a91ed7..1a9bcb8817 100644 --- a/doc/Building_FRR_on_CentOS7.md +++ b/doc/Building_FRR_on_CentOS7.md @@ -28,7 +28,7 @@ any packages** sudo groupadd -g 92 frr sudo groupadd -r -g 85 frrvt sudo useradd -u 92 -g 92 -M -r -G frrvt -s /sbin/nologin \ - -c "FRR FreeRangeRouting suite" -d /var/run/frr frr + -c "FRR FRRouting suite" -d /var/run/frr frr ### Download Source, configure and compile it (You may prefer different options on configure statement. These are just diff --git a/doc/Building_FRR_on_Debian8.md b/doc/Building_FRR_on_Debian8.md index 902f8c623a..4335e76210 100644 --- a/doc/Building_FRR_on_Debian8.md +++ b/doc/Building_FRR_on_Debian8.md @@ -32,7 +32,7 @@ any packages** sudo addgroup --system --gid 92 frr sudo addgroup --system --gid 85 frrvty sudo adduser --system --ingroup frr --groups frrvty --home /var/run/frr/ \ - --gecos "FRR FreeRangeRouting suite" --shell /bin/false frr + --gecos "FRR FRRouting suite" --shell /bin/false frr sudo usermode ### Download Source, configure and compile it diff --git a/doc/Building_FRR_on_Fedora24.md b/doc/Building_FRR_on_Fedora24.md index 9617afc733..0afc5c676a 100644 --- a/doc/Building_FRR_on_Fedora24.md +++ b/doc/Building_FRR_on_Fedora24.md @@ -21,7 +21,7 @@ using any packages** sudo groupadd -g 92 frr sudo groupadd -r -g 85 frrvt sudo useradd -u 92 -g 92 -M -r -G frrvt -s /sbin/nologin \ - -c "FRR FreeRangeRouting suite" -d /var/run/frr frr + -c "FRR FRRouting suite" -d /var/run/frr frr ### Download Source, configure and compile it (You may prefer different options on configure statement. These are just diff --git a/lib/command.c b/lib/command.c index 919e27ada4..142636afce 100644 --- a/lib/command.c +++ b/lib/command.c @@ -3087,7 +3087,7 @@ DEFUN (show_version, DEFUN (frr_version_defaults, frr_version_defaults_cmd, "frr (version|defaults) .LINE", - "FreeRangeRouting global parameters\n" + "FRRouting global parameters\n" "version configuration was written by\n" "set of configuration defaults used\n" "version string\n") diff --git a/lib/version.h.in b/lib/version.h.in index 6c78bd0544..d9eabb9f81 100644 --- a/lib/version.h.in +++ b/lib/version.h.in @@ -39,7 +39,7 @@ #define FRR_SMUX_NAME "@PACKAGE_NAME@" #define FRR_PTM_NAME "@PACKAGE_NAME@" -#define FRR_FULL_NAME "FreeRangeRouting" +#define FRR_FULL_NAME "FRRouting" #define FRR_VERSION "@PACKAGE_VERSION@" GIT_SUFFIX #define FRR_VER_SHORT "@PACKAGE_VERSION@" #define FRR_BUG_ADDRESS "@PACKAGE_BUGREPORT@" diff --git a/ospfd/ospf_dump_api.c b/ospfd/ospf_dump_api.c index 20e7740d32..5ef262ce54 100644 --- a/ospfd/ospf_dump_api.c +++ b/ospfd/ospf_dump_api.c @@ -2,7 +2,7 @@ * OSPFd dump routine (parts used by ospfclient). * Copyright (C) 1999, 2000 Toshiaki Takada * - * This file is part of FreeRangeRouting (FRR). + * This file is part of FRRouting (FRR). * * FRR is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software diff --git a/ospfd/ospf_dump_api.h b/ospfd/ospf_dump_api.h index c3ff1e3f54..1cd8257f0c 100644 --- a/ospfd/ospf_dump_api.h +++ b/ospfd/ospf_dump_api.h @@ -2,7 +2,7 @@ * OSPFd dump routine (parts used by ospfclient). * Copyright (C) 1999 Toshiaki Takada * - * This file is part of FreeRangeRouting (FRR). + * This file is part of FRRouting (FRR). * * FRR is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software diff --git a/redhat/README.rpm_build.md b/redhat/README.rpm_build.md index db3c7d45c8..c266f3dc2e 100644 --- a/redhat/README.rpm_build.md +++ b/redhat/README.rpm_build.md @@ -1,4 +1,4 @@ -Building your own FreeRangeRouting RPM +Building your own FRRouting RPM ====================================== (Tested on CentOS 6, CentOS 7 and Fedora 22.) diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index c53e8459c9..e0d8f697db 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -8,7 +8,7 @@ # rpms again and again on the same day, so the newer rpms can be installed. # bumping the number each time. -####################### FreeRangeRouting (FRR) configure options ######################### +####################### FRRouting (FRR) configure options ######################### # with-feature options %{!?with_tcp_zebra: %global with_tcp_zebra 0 } %{!?with_pam: %global with_pam 0 } @@ -128,14 +128,14 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-root Obsoletes: bird gated mrt zebra frr-sysvinit %description -FreeRangeRouting is a free software that manages TCP/IP based routing +FRRouting is a free software that manages TCP/IP based routing protocol. It takes multi-server and multi-thread approach to resolve the current complexity of the Internet. -FreeRangeRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM +FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM and LDP -FreeRangeRouting is a fork of Quagga. +FRRouting is a fork of Quagga. %package contrib Summary: contrib tools for frr @@ -303,7 +303,7 @@ if getent group %frr_user >/dev/null; then : ; else \ fi if getent passwd %frr_user >/dev/null ; then : ; else \ /usr/sbin/useradd -u %frr_uid -g %frr_gid \ - -M -r -s /sbin/nologin -c "FreeRangeRouting suite" \ + -M -r -s /sbin/nologin -c "FRRouting suite" \ -d %_localstatedir %frr_user 2> /dev/null || : ; \ fi %if 0%{?vty_group:1} @@ -571,7 +571,7 @@ rm -rf %{buildroot} %changelog * Fri Jan 6 2017 Martin Winter - %{version} -- Renamed to frr for FreeRangeRouting fork of Quagga +- Renamed to frr for FRRouting fork of Quagga * Thu Feb 11 2016 Paul Jakma - remove with_ipv6 conditionals, always build v6 diff --git a/snapcraft/README.snap_build.md b/snapcraft/README.snap_build.md index 341b210f71..b14b10b837 100644 --- a/snapcraft/README.snap_build.md +++ b/snapcraft/README.snap_build.md @@ -1,4 +1,4 @@ -Building your own FreeRangeRouting Snap +Building your own FRRouting Snap ======================================== (Tested on Ubuntu 16.04 with Snap Version 2, does not work on Ubuntu 15.x which uses earlier versions of snaps) @@ -7,7 +7,7 @@ which uses earlier versions of snaps) sudo apt-get install snapcraft -2. Checkout FreeRangeRouting under a **unpriviledged** user account +2. Checkout FRRouting under a **unpriviledged** user account git clone https://github.com/freerangerouting/frr.git cd frr @@ -56,8 +56,8 @@ The Snap will be auto-started and running. Operations ========== -### FreeRangeRouting Daemons -At this time, all FreeRangeRouting daemons are auto-started. +### FRRouting Daemons +At this time, all FRRouting daemons are auto-started. A daemon can be stopped/started with (ie ospf6d) @@ -69,7 +69,7 @@ or disabled/enabled with systemctl disable snap.frr.ospf6d.service systemctl enable snap.frr.ospf6d.service -### FreeRangeRouting Commands +### FRRouting Commands All the commands are prefixed with frr. frr.vtysh -> vtysh diff --git a/snapcraft/README.usage.md b/snapcraft/README.usage.md index 2d2b32b6b7..a8d6bca76c 100644 --- a/snapcraft/README.usage.md +++ b/snapcraft/README.usage.md @@ -1,14 +1,14 @@ -Using the FreeRangeRouting Snap +Using the FRRouting Snap =============================== After installing the Snap, the priviledged plug need to be connected: snap connect frr:network-control ubuntu-core:network-control -Enabling/Disabling FreeRangeRouting Daemons +Enabling/Disabling FRRouting Daemons ------------------------------------------- -By default (at this time), all FreeRangeRouting daemons will be enabled +By default (at this time), all FRRouting daemons will be enabled on installation. If you want to disable a specific daemon, then use the systemctl commands @@ -24,7 +24,7 @@ Commands defined by this snap ----------------------------- - `frr.vtysh`: - FreeRangeRouting VTY Shell (configuration tool) + FRRouting VTY Shell (configuration tool) - `frr.version`: Returns output of `zebra --version` to display version and configured options @@ -62,7 +62,7 @@ FAQ Sourcecode available ==================== -The source for this SNAP is available as part of the FreeRangeRouting +The source for this SNAP is available as part of the FRRouting Source Code Distribution. https://github.com/freerangerouting/frr.git diff --git a/snapcraft/snapcraft.yaml.in b/snapcraft/snapcraft.yaml.in index a703766f0b..a20a1d0392 100644 --- a/snapcraft/snapcraft.yaml.in +++ b/snapcraft/snapcraft.yaml.in @@ -1,11 +1,11 @@ name: frr version: @VERSION@ -summary: FreeRangeRouting BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM/LDP routing daemon +summary: FRRouting BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM/LDP routing daemon description: BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM routing daemon - FreeRangeRouting (FRR) is free software which manages TCP/IP based routing + FRRouting (FRR) is free software which manages TCP/IP based routing protocols. It supports BGP4, BGP4+, OSPFv2, OSPFv3, IS-IS, RIPv1, RIPv2, RIPng, PIM and LDP as well as the IPv6 versions of these. - FreeRangeRouting (frr) is a fork of Quagga. + FRRouting (frr) is a fork of Quagga. confinement: strict grade: devel diff --git a/solaris/README.txt b/solaris/README.txt index 01f725b8fa..589570d881 100644 --- a/solaris/README.txt +++ b/solaris/README.txt @@ -15,13 +15,13 @@ Requirements: i.manifest must be at least version 1.5. Place these scripts in this directory if you are using Solaris 10 GA (which does not ship with - these scripts), or in the solaris/ directory in the FreeRangeRouting source. + these scripts), or in the solaris/ directory in the FRRouting source. Package creation instructions: ------------------------------ -1. Configure and build FreeRangeRouting (frr) in the top level build directory as per normal, eg: +1. Configure and build FRRouting (frr) in the top level build directory as per normal, eg: ./configure --prefix=/usr/local/frr \ --localstatedir=/var/run/frr \ @@ -102,7 +102,7 @@ Install and post-install configuration notes: # # svcs -l ripd fmri svc:/network/routing/frr:ripd - name FreeRangeRouting: ripd, RIPv1/2 IPv4 routing protocol daemon. + name FRRouting: ripd, RIPv1/2 IPv4 routing protocol daemon. enabled true state online next_state none @@ -117,7 +117,7 @@ Install and post-install configuration notes: - Configuration of startup options is by way of SMF properties in a property group named 'frr'. The defaults should automatically be - inline with how you configured FreeRangeRouting in Step 1 above. + inline with how you configured FRRouting in Step 1 above. - By default the VTY interface is disabled. To change this, see below for how to set the 'frr/vty_port' property as appropriate for @@ -176,11 +176,11 @@ Install and post-install configuration notes: - As SMF is dependency aware, restarting network/zebra will restart all the other daemons. - - To upgrade from one set of FreeRangeRouting packages to a newer release, + - To upgrade from one set of FRRouting packages to a newer release, one must first pkgrm the installed packages. When one pkgrm's FRRsmf all property configuration will be lost, and any customisations will have to redone after installing the updated FRRsmf package. - These packages are not supported by Sun Microsystems, report bugs via the - usual FreeRangeRouting channels, ie Issue Tracker. Improvements/contributions of course would be greatly appreciated. + usual FRRouting channels, ie Issue Tracker. Improvements/contributions of course would be greatly appreciated. diff --git a/solaris/depend.daemons.in b/solaris/depend.daemons.in index 64fb03ac19..a8ce943e31 100644 --- a/solaris/depend.daemons.in +++ b/solaris/depend.daemons.in @@ -1,4 +1,4 @@ -P FRRlibs FreeRangeRouting common runtime libraries +P FRRlibs FRRouting common runtime libraries @PACKAGE_VERSION@,REV=@CONFDATE@ P SUNWcsu Core Solaris, (Usr) P SUNWcsr Core Solaris Libraries (Root) diff --git a/solaris/depend.dev.in b/solaris/depend.dev.in index 5d8bf16ed6..1b65724a04 100644 --- a/solaris/depend.dev.in +++ b/solaris/depend.dev.in @@ -1,2 +1,2 @@ -P FRRlibs FreeRangeRouting common runtime libraries +P FRRlibs FRRouting common runtime libraries @PACKAGE_VERSION@,REV=@CONFDATE@ diff --git a/solaris/depend.libs.in b/solaris/depend.libs.in index 6ead0b2867..04f04efd01 100644 --- a/solaris/depend.libs.in +++ b/solaris/depend.libs.in @@ -1,5 +1,5 @@ P SUNWcslr Core Solaris Libraries (Root) P SUNWcsl Core Solaris, (Shared Libs) P SUNWlibmsr Math & Microtasking Libraries (Root) -R FRRdaemons FreeRangeRouting daemons +R FRRdaemons FRRouting daemons R FRRdev diff --git a/solaris/depend.smf.in b/solaris/depend.smf.in index 66b11eba2a..b3b1bd778c 100644 --- a/solaris/depend.smf.in +++ b/solaris/depend.smf.in @@ -1,4 +1,4 @@ -P FRRaemons FreeRangeRouting daemons +P FRRaemons FRRouting daemons @PACKAGE_VERSION@,REV=@CONFDATE@ P SUNWcsu Core Solaris, (Usr) P SUNWcsr Core Solaris Libraries (Root) diff --git a/solaris/frr.init.in b/solaris/frr.init.in index 580fd9b35c..bd9ab85e69 100755 --- a/solaris/frr.init.in +++ b/solaris/frr.init.in @@ -3,20 +3,20 @@ # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -# This file is part of FreeRangeRouting. +# This file is part of FRRouting. # -# FreeRangeRouting is free software; you can redistribute it and/or modify +# FRRouting is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2, or (at your option) any # later version. # -# FreeRangeRouting is distributed in the hope that it will be useful, but +# FRRouting is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with FreeRangeRouting; see the file COPYING. If not, write to +# along with FRRouting; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # @@ -74,7 +74,7 @@ handle_routeadm_upgrade () { upgrade_config () { DAEMON=$1 - # handle upgrade of SUNWzebra to FreeRangeRouting + # handle upgrade of SUNWzebra to FRRouting if [ -d "/etc/frr" -a ! -f "/etc/frr/${DAEMON}.conf" ] ; then if [ -f "/etc/sfw/zebra/${DAEMON}.conf" ] ; then cp "/etc/sfw/zebra/${DAEMON}.conf" \ @@ -216,7 +216,7 @@ case "${DAEMON}" in ;; esac -# Older FreeRangeRouting SMF packages pass daemon args on the commandline +# Older FRRouting SMF packages pass daemon args on the commandline # Newer SMF routeadm model uses properties for each argument # so we must handle that. if [ smf_present -a -f "$ROUTEADMINCLUDE" ]; then diff --git a/solaris/frr.xml.in b/solaris/frr.xml.in index 5ac7e52721..825c987a41 100644 --- a/solaris/frr.xml.in +++ b/solaris/frr.xml.in @@ -1,20 +1,20 @@ + option name, consult FRRouting documentation --> + frrouting Signed-off-by: Lou Berger --- ChangeLog | 2 +- REPORTING-BUGS | 2 +- configure.ac | 4 ++-- debian/README.Debian | 2 +- debian/copyright | 4 ++-- doc/Building_FRR_on_CentOS6.md | 2 +- doc/Building_FRR_on_CentOS7.md | 2 +- doc/Building_FRR_on_Debian8.md | 2 +- doc/Building_FRR_on_Fedora24.md | 2 +- doc/Building_FRR_on_FreeBSD10.md | 2 +- doc/Building_FRR_on_FreeBSD11.md | 2 +- doc/Building_FRR_on_FreeBSD9.md | 2 +- doc/Building_FRR_on_NetBSD6.md | 2 +- doc/Building_FRR_on_NetBSD7.md | 2 +- doc/Building_FRR_on_OmniOS.md | 2 +- doc/Building_FRR_on_OpenBSD6.md | 2 +- doc/Building_FRR_on_Ubuntu1204.md | 2 +- doc/Building_FRR_on_Ubuntu1404.md | 2 +- doc/Building_FRR_on_Ubuntu1604.md | 2 +- doc/frr.texi | 12 ++++++------ doc/overview.texi | 12 ++++++------ redhat/README.rpm_build.md | 2 +- redhat/frr.spec.in | 4 ++-- snapcraft/README.snap_build.md | 2 +- snapcraft/README.usage.md | 2 +- solaris/frr.xml.in | 24 ++++++++++++------------ solaris/pkginfo.tmpl.in | 4 ++-- 27 files changed, 52 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6793fc25d7..ec7e6cdde8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ ChangeLog information for FRRouting is for now recorded in source-code management system. Please see: - http://www.freerangerouting.org/ + http://www.frrouting.org/ diff --git a/REPORTING-BUGS b/REPORTING-BUGS index a37f5c2829..01f25a2051 100644 --- a/REPORTING-BUGS +++ b/REPORTING-BUGS @@ -10,7 +10,7 @@ non-response to requests to reconfirm or supply additional information. Report bugs on Github Issue Tracker at - https://github.com/freerangerouting/frr/issues + https://github.com/frrouting/frr/issues Please supply the following information: 1. Your FRRouting version or if it is from git then the commit reference. diff --git a/configure.ac b/configure.ac index cbddaa63fa..02f1ae239c 100755 --- a/configure.ac +++ b/configure.ac @@ -7,8 +7,8 @@ ## AC_PREREQ(2.60) -AC_INIT(frr, 2.0-rc2, [https://github.com/freerangerouting/frr/issues]) -PACKAGE_URL="https://freerangerouting.org/" +AC_INIT(frr, 2.0-rc2, [https://github.com/frrouting/frr/issues]) +PACKAGE_URL="https://frrouting.org/" PACKAGE_FULLNAME="FRRouting" AC_SUBST(PACKAGE_FULLNAME) diff --git a/debian/README.Debian b/debian/README.Debian index caded52075..4cf35d7e32 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -14,7 +14,7 @@ available forcing you to explicitly type "apt-get install frr" to upgrade it. * What is frr? ================= -http://www.freerangerouting.org/ +http://www.frrouting.org/ FRR is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng, ISIS, PIM, BGP and LDP for Unix platforms, particularly FreeBSD and Linux and also NetBSD, to mention a few. FRR is a fork of Quagga diff --git a/debian/copyright b/debian/copyright index 6a5ed98f91..7b873abd31 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,7 +1,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Frr -Upstream-Contact: maintainers@freerangerouting.org, security@freerangerouting.org -Source: http://www.freerangerouting.org/ +Upstream-Contact: maintainers@frrouting.org, security@frrouting.org +Source: http://www.frrouting.org/ Files: * Copyright: 1996-2003 by the original Zebra authors: diff --git a/doc/Building_FRR_on_CentOS6.md b/doc/Building_FRR_on_CentOS6.md index 1ff4748230..c0c8efafdd 100644 --- a/doc/Building_FRR_on_CentOS6.md +++ b/doc/Building_FRR_on_CentOS6.md @@ -78,7 +78,7 @@ an example.) You may want to pay special attention to `/usr/lib64` paths and change them if you are not building on a x86_64 architecture - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_CentOS7.md b/doc/Building_FRR_on_CentOS7.md index 1a9bcb8817..570d14dee8 100644 --- a/doc/Building_FRR_on_CentOS7.md +++ b/doc/Building_FRR_on_CentOS7.md @@ -37,7 +37,7 @@ an example.) You may want to pay special attention to `/usr/lib64` paths and change them if you are not building on a x86_64 architecture - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_Debian8.md b/doc/Building_FRR_on_Debian8.md index 4335e76210..81d58827d3 100644 --- a/doc/Building_FRR_on_Debian8.md +++ b/doc/Building_FRR_on_Debian8.md @@ -39,7 +39,7 @@ any packages** (You may prefer different options on configure statement. These are just an example.) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_Fedora24.md b/doc/Building_FRR_on_Fedora24.md index 0afc5c676a..6c5b78b1eb 100644 --- a/doc/Building_FRR_on_Fedora24.md +++ b/doc/Building_FRR_on_Fedora24.md @@ -30,7 +30,7 @@ an example.) You may want to pay special attention to `/usr/lib64` paths and change them if you are not building on a x86_64 architecture - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_FreeBSD10.md b/doc/Building_FRR_on_FreeBSD10.md index 696b7d5d2e..8b5c919b64 100644 --- a/doc/Building_FRR_on_FreeBSD10.md +++ b/doc/Building_FRR_on_FreeBSD10.md @@ -41,7 +41,7 @@ using any packages** (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_FreeBSD11.md b/doc/Building_FRR_on_FreeBSD11.md index d0b8a7bf88..4c8704c6aa 100644 --- a/doc/Building_FRR_on_FreeBSD11.md +++ b/doc/Building_FRR_on_FreeBSD11.md @@ -41,7 +41,7 @@ using any packages** (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_FreeBSD9.md b/doc/Building_FRR_on_FreeBSD9.md index d470d0046a..0a866acf90 100644 --- a/doc/Building_FRR_on_FreeBSD9.md +++ b/doc/Building_FRR_on_FreeBSD9.md @@ -41,7 +41,7 @@ using any packages** (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_NetBSD6.md b/doc/Building_FRR_on_NetBSD6.md index 03d04ce954..dfc1f2c292 100644 --- a/doc/Building_FRR_on_NetBSD6.md +++ b/doc/Building_FRR_on_NetBSD6.md @@ -45,7 +45,7 @@ Get FRR, compile it and install it (from Git) (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_NetBSD7.md b/doc/Building_FRR_on_NetBSD7.md index d9b4b47ea6..99230e385e 100644 --- a/doc/Building_FRR_on_NetBSD7.md +++ b/doc/Building_FRR_on_NetBSD7.md @@ -39,7 +39,7 @@ Get FRR, compile it and install it (from Git) (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_OmniOS.md b/doc/Building_FRR_on_OmniOS.md index f158c80a75..7ed22aaae3 100644 --- a/doc/Building_FRR_on_OmniOS.md +++ b/doc/Building_FRR_on_OmniOS.md @@ -87,7 +87,7 @@ any packages** (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_OpenBSD6.md b/doc/Building_FRR_on_OpenBSD6.md index 9e13d5ce45..40bf982a47 100644 --- a/doc/Building_FRR_on_OpenBSD6.md +++ b/doc/Building_FRR_on_OpenBSD6.md @@ -40,7 +40,7 @@ any packages** (You may prefer different options on configure statement. These are just an example) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_Ubuntu1204.md b/doc/Building_FRR_on_Ubuntu1204.md index 3312a2c9c8..6e6374c2f8 100644 --- a/doc/Building_FRR_on_Ubuntu1204.md +++ b/doc/Building_FRR_on_Ubuntu1204.md @@ -72,7 +72,7 @@ any packages** (You may prefer different options on configure statement. These are just an example.) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_Ubuntu1404.md b/doc/Building_FRR_on_Ubuntu1404.md index ac0a45acdf..6db3f426b4 100644 --- a/doc/Building_FRR_on_Ubuntu1404.md +++ b/doc/Building_FRR_on_Ubuntu1404.md @@ -32,7 +32,7 @@ any packages** (You may prefer different options on configure statement. These are just an example.) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/Building_FRR_on_Ubuntu1604.md b/doc/Building_FRR_on_Ubuntu1604.md index d1e1a377d0..8e71cc1eee 100644 --- a/doc/Building_FRR_on_Ubuntu1604.md +++ b/doc/Building_FRR_on_Ubuntu1604.md @@ -33,7 +33,7 @@ any packages** (You may prefer different options on configure statement. These are just an example.) - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr cd frr git checkout stable/2.0 ./bootstrap.sh diff --git a/doc/frr.texi b/doc/frr.texi index d4a78b7b81..0478ec592a 100644 --- a/doc/frr.texi +++ b/doc/frr.texi @@ -7,7 +7,7 @@ @setfilename frr.info @c Set variables - sourced from defines.texi @include defines.texi -@settitle @uref{http://www.freerangerouting.org,,@value{PACKAGE_NAME}} +@settitle @uref{http://www.frrouting.org,,@value{PACKAGE_NAME}} @c %**end of header @c automake will automatically generate version.texi @@ -48,16 +48,16 @@ This file documents the Frr Software Routing Suite which manages common TCP/IP routing protocols. This is Edition @value{EDITION}, last updated @value{UPDATED} of -@cite{The Frr Manual}, for @uref{http://www.freerangerouting.org/,,@value{PACKAGE_NAME}} +@cite{The Frr Manual}, for @uref{http://www.frrouting.org/,,@value{PACKAGE_NAME}} Version @value{VERSION}. @insertcopying @end ifinfo @titlepage -@title @uref{http://www.freerangerouting.org,,Frr} +@title @uref{http://www.frrouting.org,,Frr} @subtitle A routing software package for TCP/IP networks -@subtitle @uref{http://www.freerangerouting.org,,@value{PACKAGE_NAME}} @value{VERSION} +@subtitle @uref{http://www.frrouting.org,,@value{PACKAGE_NAME}} @value{VERSION} @subtitle @value{UPDATED-MONTH} @author @value{AUTHORS} @@ -72,9 +72,9 @@ Version @value{VERSION}. @node Top @top Frr -- With Virtual Network Control -@uref{http://www.freerangerouting.org,,Frr} is an advanced routing software package +@uref{http://www.frrouting.org,,Frr} is an advanced routing software package that provides a suite of TCP/IP based routing protocols. This is the Manual -for @value{PACKAGE_STRING}. @uref{http://www.freerangerouting.org,,Frr} is a fork of +for @value{PACKAGE_STRING}. @uref{http://www.frrouting.org,,Frr} is a fork of @uref{http://www.quagga.net,,Quagga}. @insertcopying diff --git a/doc/overview.texi b/doc/overview.texi index 370ada3f8a..7ecf3d95c3 100644 --- a/doc/overview.texi +++ b/doc/overview.texi @@ -2,7 +2,7 @@ @chapter Overview @cindex Overview - @uref{http://www.freerangerouting.org,,Frr} is a routing software package that + @uref{http://www.frrouting.org,,Frr} is a routing software package that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+ (@pxref{Supported RFCs}). Frr also supports special BGP Route Reflector and Route Server @@ -275,12 +275,12 @@ November 1995.} The official Frr web-site is located at: -@uref{http://www.freerangerouting.org/} +@uref{http://www.frrouting.org/} and contains further information, as well as links to additional resources. -@uref{http://www.freerangerouting.org/,Frr} is a fork of Quagga, whose +@uref{http://www.frrouting.org/,Frr} is a fork of Quagga, whose web-site is located at: @uref{http://www.quagga.net/}. @@ -298,7 +298,7 @@ comments or suggestions to Frr, please subscribe to: @uref{http://lists.nox.tf/listinfo/frr-users}. -The @uref{http://www.freerangerouting.org/,,Frr} site has further information on +The @uref{http://www.frrouting.org/,,Frr} site has further information on the available mailing lists, see: @uref{http://lists.nox.tf/lists.php} @@ -315,7 +315,7 @@ the available mailing lists, see: If you think you have found a bug, please send a bug report to: -@uref{http://github.com/freerangerouting/frr/issues} +@uref{http://github.com/frrouting/frr/issues} When you send a bug report, please be careful about the points below. @@ -334,4 +334,4 @@ arguments to the configure script please note that too. Bug reports are very important for us to improve the quality of Frr. Frr is still in the development stage, but please don't hesitate to -send a bug report to @uref{http://github.com/freerangerouting/frr/issues}. +send a bug report to @uref{http://github.com/frrouting/frr/issues}. diff --git a/redhat/README.rpm_build.md b/redhat/README.rpm_build.md index c266f3dc2e..6bec5d65cd 100644 --- a/redhat/README.rpm_build.md +++ b/redhat/README.rpm_build.md @@ -12,7 +12,7 @@ Building your own FRRouting RPM 2. Checkout FRR under a **unpriviledged** user account - git clone https://github.com/freerangerouting/frr.git frr + git clone https://github.com/frrouting/frr.git frr 3. Run Bootstrap and make distribution tar.gz diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index e0d8f697db..6d94b5a5cc 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -100,8 +100,8 @@ Version: %{rpmversion} Release: @CONFDATE@%{release_rev}%{?dist} License: GPLv2+ Group: System Environment/Daemons -Source0: http://www.freerangerouting.org/releases/frr/%{name}-%{frrversion}.tar.gz -URL: http://www.freerangerouting.org +Source0: http://www.frrouting.org/releases/frr/%{name}-%{frrversion}.tar.gz +URL: http://www.frrouting.org Requires: ncurses json-c Requires(pre): /sbin/install-info Requires(preun): /sbin/install-info diff --git a/snapcraft/README.snap_build.md b/snapcraft/README.snap_build.md index b14b10b837..c4db51bd6a 100644 --- a/snapcraft/README.snap_build.md +++ b/snapcraft/README.snap_build.md @@ -9,7 +9,7 @@ which uses earlier versions of snaps) 2. Checkout FRRouting under a **unpriviledged** user account - git clone https://github.com/freerangerouting/frr.git + git clone https://github.com/frrouting/frr.git cd frr 3. Run Bootstrap and make distribution tar.gz diff --git a/snapcraft/README.usage.md b/snapcraft/README.usage.md index a8d6bca76c..aaff59438a 100644 --- a/snapcraft/README.usage.md +++ b/snapcraft/README.usage.md @@ -65,7 +65,7 @@ Sourcecode available The source for this SNAP is available as part of the FRRouting Source Code Distribution. - https://github.com/freerangerouting/frr.git + https://github.com/frrouting/frr.git Instructions for rebuilding the snap are in `README.snap_build.md` diff --git a/solaris/frr.xml.in b/solaris/frr.xml.in index 825c987a41..08a9a11c0f 100644 --- a/solaris/frr.xml.in +++ b/solaris/frr.xml.in @@ -148,8 +148,8 @@ - + @@ -279,8 +279,8 @@ - + @@ -408,8 +408,8 @@ - + @@ -539,8 +539,8 @@ - + @@ -665,8 +665,8 @@ - + @@ -818,8 +818,8 @@ - + diff --git a/solaris/pkginfo.tmpl.in b/solaris/pkginfo.tmpl.in index 02abb0f96b..89a281ceb6 100644 --- a/solaris/pkginfo.tmpl.in +++ b/solaris/pkginfo.tmpl.in @@ -1,9 +1,9 @@ ARCH="@target_cpu@" CATEGORY="system" VERSION="@PACKAGE_VERSION@,REV=@CONFDATE@" -VENDOR="http://www.freerangerouting.org/" +VENDOR="http://www.frrouting.org/" HOTLINE="@PACKAGE_BUGREPORT@" -EMAIL=maintainers@freerangerouting.org +EMAIL=maintainers@frrouting.org DESC="@PACKAGE_NAME@ Routing Protocols" MAXINST=1 CLASSES="none preserve renamenew manifest" From 7e5b53972233b6aea593397ed8fb8f55068eadaf Mon Sep 17 00:00:00 2001 From: Mike Tancsa Date: Fri, 31 Mar 2017 17:50:35 -0300 Subject: [PATCH 11/12] lib: fix usage of getgrouplist() in *BSD On BSD systems, the getgrouplist() function returns 0 if successful and -1 on error. Linux in the other hand returns *ngroups (the number of groups of which user is a member) on success and -1 on error. Given this difference, the most portable way to use getgrouplist() is use its return value only for checking if it succeeded or not. Signed-off-by: Renato Westphal --- lib/privs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/privs.c b/lib/privs.c index 376d6f3365..decd4bb7db 100644 --- a/lib/privs.c +++ b/lib/privs.c @@ -731,7 +731,7 @@ zprivs_init(struct zebra_privs_t *zprivs) if (zprivs->user) { ngroups = sizeof(groups); - if ( (ngroups = getgrouplist (zprivs->user, zprivs_state.zgid, groups, &ngroups )) < 0 ) + if (getgrouplist (zprivs->user, zprivs_state.zgid, groups, &ngroups) < 0) { /* cant use log.h here as it depends on vty */ fprintf (stderr, "privs_init: could not getgrouplist for user %s\n", From 3e71b5d907e9a58049e188cd88ad86614c5ad4f6 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Sat, 1 Apr 2017 22:22:47 -0700 Subject: [PATCH 12/12] Release: FRR-2.0 Signed-off-by: Martin Winter --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 02f1ae239c..63fbc304fc 100755 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ ## AC_PREREQ(2.60) -AC_INIT(frr, 2.0-rc2, [https://github.com/frrouting/frr/issues]) +AC_INIT(frr, 2.0, [https://github.com/frrouting/frr/issues]) PACKAGE_URL="https://frrouting.org/" PACKAGE_FULLNAME="FRRouting" AC_SUBST(PACKAGE_FULLNAME)