diff options
31 files changed, 153 insertions, 185 deletions
diff --git a/Makefile.am b/Makefile.am index 6e3c2a4181..8797a8e5ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -181,7 +181,6 @@ EXTRA_DIST += \ redhat/frr.logrotate \ redhat/frr.pam \ redhat/frr.spec \ - redhat/README.rpm_build.md \ \ snapcraft/snapcraft.yaml \ snapcraft/README.snap_build.md \ diff --git a/doc/developer/building-frr-for-centos6.rst b/doc/developer/building-frr-for-centos6.rst index c57573cb9f..732959212e 100644 --- a/doc/developer/building-frr-for-centos6.rst +++ b/doc/developer/building-frr-for-centos6.rst @@ -1,9 +1,10 @@ +.. _building-centos6: + CentOS 6 ======================================== -(As an alternative to this installation, you may prefer to create a FRR -rpm package yourself and install that package instead. See instructions -in redhat/README.rpm\_build.md on how to build a rpm package) +This document describes installation from source. If you want to build an RPM, +see :ref:`packaging-redhat`. Instructions are tested with ``CentOS 6.8`` on ``x86_64`` platform @@ -24,7 +25,7 @@ CentOS 6 restrictions: PIMd is needed - MPLS is not supported on ``CentOS 6``. MPLS requires Linux Kernel 4.5 or higher (LDP can be built, but may have limited use without MPLS) -- Zebra is unable to detect what bridge/vrf an interface is associcated +- Zebra is unable to detect what bridge/vrf an interface is associated with (IFLA\_INFO\_SLAVE\_KIND does not exist in the kernel headers, you can use a newer kernel + headers to get this functionality) - frr\_reload.py will not work, as this requires Python 2.7, and CentOS @@ -235,7 +236,7 @@ settings):: # Controls source route verification net.ipv4.conf.default.rp_filter = 0 -Load the modifed sysctl's on the system: +Load the modified sysctl's on the system: .. code-block:: shell diff --git a/doc/developer/building-frr-for-centos7.rst b/doc/developer/building-frr-for-centos7.rst index 8f82cd6c9a..89445408bd 100644 --- a/doc/developer/building-frr-for-centos7.rst +++ b/doc/developer/building-frr-for-centos7.rst @@ -1,9 +1,8 @@ CentOS 7 ======================================== -(As an alternative to this installation, you may prefer to create a FRR -rpm package yourself and install that package instead. See instructions -in redhat/README.rpm\_build.md on how to build a rpm package) +This document describes installation from source. If you want to build an RPM, +see :ref:`packaging-redhat`. CentOS 7 restrictions: ---------------------- @@ -127,7 +126,7 @@ following content: net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1 -Load the modifed sysctl's on the system: +Load the modified sysctl's on the system: :: diff --git a/doc/developer/building-frr-for-fedora24.rst b/doc/developer/building-frr-for-fedora24.rst index 2edf9b3e44..708baec3ee 100644 --- a/doc/developer/building-frr-for-fedora24.rst +++ b/doc/developer/building-frr-for-fedora24.rst @@ -1,9 +1,8 @@ Fedora 24 ========================================= -(As an alternative to this installation, you may prefer to create a FRR -rpm package yourself and install that package instead. See instructions -in redhat/README.rpm\_build.md on how to build a rpm package) +This document describes installation from source. If you want to build an RPM, +see :ref:`packaging-redhat`. Install required packages ------------------------- @@ -126,7 +125,7 @@ required MPLS similar to ``net.mpls.conf.eth0.input=1``) net.mpls.conf.eth2.input=1 net.mpls.platform_labels=100000 -Load the modifed sysctl's on the system: +Load the modified sysctl's on the system: :: diff --git a/doc/developer/building-frr-for-freebsd10.rst b/doc/developer/building-frr-for-freebsd10.rst index a6539309a2..5d0a7f6cbb 100644 --- a/doc/developer/building-frr-for-freebsd10.rst +++ b/doc/developer/building-frr-for-freebsd10.rst @@ -11,7 +11,7 @@ FreeBSD 10 restrictions: Install required packages ------------------------- -Add packages: (Allow the install of the package managment tool if this +Add packages: (Allow the install of the package management tool if this is first package install and asked) :: diff --git a/doc/developer/building-frr-for-freebsd11.rst b/doc/developer/building-frr-for-freebsd11.rst index 16d06e0a66..c85255e6ee 100644 --- a/doc/developer/building-frr-for-freebsd11.rst +++ b/doc/developer/building-frr-for-freebsd11.rst @@ -11,7 +11,7 @@ FreeBSD 11 restrictions: Install required packages ------------------------- -Add packages: (Allow the install of the package managment tool if this +Add packages: (Allow the install of the package management tool if this is first package install and asked) .. code-block:: shell diff --git a/doc/developer/building-frr-for-freebsd9.rst b/doc/developer/building-frr-for-freebsd9.rst index 36492fb886..4009f1b8d3 100644 --- a/doc/developer/building-frr-for-freebsd9.rst +++ b/doc/developer/building-frr-for-freebsd9.rst @@ -11,7 +11,7 @@ FreeBSD 9 restrictions: Install required packages ------------------------- -Add packages: (Allow the install of the package managment tool if this +Add packages: (Allow the install of the package management tool if this is first package install and asked) :: diff --git a/doc/developer/building-frr-for-openwrt.rst b/doc/developer/building-frr-for-openwrt.rst index b9be1b5226..8f72ab5d9d 100644 --- a/doc/developer/building-frr-for-openwrt.rst +++ b/doc/developer/building-frr-for-openwrt.rst @@ -63,10 +63,10 @@ Usage ----- Edit ``/usr/sbin/frr.init`` and add/remove the daemons name in section -``DAEMONS=`` or don't install unneded packages For example: zebra bgpd ldpd +``DAEMONS=`` or don't install unneeded packages For example: zebra bgpd ldpd isisd nhrpd ospfd ospf6d pimd ripd ripngd -Enable the serivce +Enable the service ^^^^^^^^^^^^^^^^^^ - ``service frr enable`` diff --git a/doc/developer/hooks.rst b/doc/developer/hooks.rst index 4140a0d171..10fe6b9c43 100644 --- a/doc/developer/hooks.rst +++ b/doc/developer/hooks.rst @@ -6,7 +6,7 @@ Hooks Libfrr provides type-safe subscribable hook points where other pieces of code can add one or more callback functions. "type-safe" in this case applies to the function pointers used for subscriptions. The -implementations checks (at compile-time) wheter a callback to be added has +implementations checks (at compile-time) whether a callback to be added has the appropriate function signature (parameters) for the hook. Example: diff --git a/doc/developer/logging.rst b/doc/developer/logging.rst index 4338d900e6..1dc1885158 100644 --- a/doc/developer/logging.rst +++ b/doc/developer/logging.rst @@ -18,7 +18,7 @@ maybe by a syslog collector from all routers.) Therefore, anything that needs to get the user in the loop—and only these things—are warnings or errors. -Note that this doesn't neccessarily mean the user needs to fix something in +Note that this doesn't necessarily mean the user needs to fix something in the FRR instance. It also includes when we detect something else needs fixing, for example another router, the system we're running on, or the configuration. The common point is that the user should probably do diff --git a/doc/developer/memtypes.rst b/doc/developer/memtypes.rst index 43cbe002cf..153131bab9 100644 --- a/doc/developer/memtypes.rst +++ b/doc/developer/memtypes.rst @@ -3,7 +3,7 @@ Memtypes ======== -FRR includes wrappers arround ``malloc()`` and ``free()`` that count the number +FRR includes wrappers around ``malloc()`` and ``free()`` that count the number of objects currently allocated, for each of a defined ``MTYPE``. To this extent, there are *memory groups* and *memory types*. Each memory diff --git a/doc/developer/ospf-api.rst b/doc/developer/ospf-api.rst index 90fc52efd0..f4f38a63e9 100644 --- a/doc/developer/ospf-api.rst +++ b/doc/developer/ospf-api.rst @@ -284,7 +284,7 @@ Each message begins with the following header: The message type field can take one of the following values: +-------------------------------+---------+ -| Messages to OSPF deamon | Value | +| Messages to OSPF daemon | Value | +===============================+=========+ | MSG\_REGISTER\_OPAQUETYPE | 1 | +-------------------------------+---------+ @@ -300,7 +300,7 @@ The message type field can take one of the following values: +-------------------------------+---------+ +-----------------------------+---------+ -| Messages from OSPF deamon | Value | +| Messages from OSPF daemon | Value | +=============================+=========+ | MSG\_REPLY | 10 | +-----------------------------+---------+ diff --git a/doc/developer/ospf-sr.rst b/doc/developer/ospf-sr.rst index 4a673b155b..23bc803d76 100644 --- a/doc/developer/ospf-sr.rst +++ b/doc/developer/ospf-sr.rst @@ -31,7 +31,7 @@ Implementation details Concepts ^^^^^^^^ -Segment Routing used 3 differents OPAQUE LSA in OSPF to carry the various +Segment Routing used 3 different OPAQUE LSA in OSPF to carry the various information: * **Router Information:** flood the Segment Routing capabilities of the node. @@ -40,7 +40,7 @@ information: * **Extended Link:** flood the Adjaceny and Lan Adjacency Segment Identifier * **Extended Prefix:** flood the Prefix Segment Identifier -The implementation follow previous TE and Router Information codes. It used the +The implementation follows previous TE and Router Information codes. It used the OPAQUE LSA functions defined in ospf_opaque.[c,h] as well as the OSPF API. This latter is mandatory for the implementation as it provides the Callback to Segment Routing functions (see below) when an Extended Link / Prefix or Router @@ -71,7 +71,7 @@ The figure below shows the relation between the various files: (4.0.0.0), Extended Prefix (7.0.0.X) and Link (8.0.0.X) by ospf_ri.c, respectively ospf_ext.c. * ospf_ri.c send back to ospf_sr.c received Router Information LSA and update - Self Router Information LSA with paramters provided by ospf_sr.c i.e. SRGB + Self Router Information LSA with parameters provided by ospf_sr.c i.e. SRGB and MSD. It use ospf_opaque.c functions to send/received these Opaque LSAs. * ospf_ext.c send back to ospf_sr.c received Extended Prefix and Link Opaque LSA and send self Extended Prefix and Link Opaque LSA through ospf_opaque.c @@ -129,8 +129,8 @@ Opaque LSA it is the `ospf_opaque_lsa_install_hook()`. For deletion, it is Note that incoming LSA which is already present in the LSDB will be inserted after the old instance of this LSA remove from the LSDB. Thus, after the first time, each incoming LSA will trigger a `delete` following by an `install`. This -is not very helpfull to handle real LSA deletion. In fact, LSA deletion is done -by Flushing LSA i.e. flood LSA after seting its age to MAX_AGE. Then, a garbage +is not very helpful to handle real LSA deletion. In fact, LSA deletion is done +by Flushing LSA i.e. flood LSA after setting its age to MAX_AGE. Then, a garbage function has the role to remove all LSA with `age == MAX_AGE` in the LSDB. So, to handle LSA Flush, the best is to look to the LSA age to determine if it is an installation or a future deletion i.e. the flushed LSA is first store in the @@ -144,7 +144,7 @@ introduced. When this command is activated, function `ospf_router_info_update_sr()` is called to indicate to Router Information process that Segment Routing TLVs must be flood. Same function is called to modify the Segment Routing Global Block (SRGB) and Maximum Stack Depth (MSD) -TLV. Only Shortest Path First (SPF) Algorithm is supported, so no possiblity +TLV. Only Shortest Path First (SPF) Algorithm is supported, so no possibility to modify this TLV is offer by the code. When Opaque LSA Tyep 4 i.e. Router Information are stored in LSDB, function @@ -159,8 +159,8 @@ Extended Link Prefix LSAs ^^^^^^^^^^^^^^^^^^^^^^^^^ Like for Router Information, Segment Routing is activate at the Extended -Link/Prefix level with new `segment-routing on` command. This trigger -automtically the flooding of Extended Link LSA for all ospf interface where +Link/Prefix level with new `segment-routing on` command. This triggers +automatically the flooding of Extended Link LSA for all ospf interfaces where adjacency is full. For Extended Prefix LSA, the new CLI command `segment-routing prefix ...` will trigger the flooding of Prefix SID TLV/SubTLVs. @@ -255,7 +255,7 @@ The first segment-routing statement enable it. The Second one set the SRGB, third line the MSD and finally, set the Prefix SID index for a given prefix. Note that only prefix of Loopback interface could be configured with a Prefix SID. It is possible to add `no-php-flag` at the end of the prefix command to -disbale Penultimate Hop Popping. This advertises peers that they MUST NOT pop +disable Penultimate Hop Popping. This advertises to peers that they MUST NOT pop the MPLS label prior to sending the packet. Known limitations diff --git a/doc/developer/packaging-debian.rst b/doc/developer/packaging-debian.rst index c660f98680..b57286d5a1 100644 --- a/doc/developer/packaging-debian.rst +++ b/doc/developer/packaging-debian.rst @@ -1,3 +1,5 @@ +.. _packaging-debian: + Packaging Debian ================ diff --git a/doc/developer/packaging-redhat.rst b/doc/developer/packaging-redhat.rst new file mode 100644 index 0000000000..f6b9931156 --- /dev/null +++ b/doc/developer/packaging-redhat.rst @@ -0,0 +1,85 @@ +.. _packaging-redhat: + +Packaging Red Hat +================= + +Tested on CentOS 6, CentOS 7 and Fedora 24. + +1. On CentOS 6, refer to :ref:`building-centos6` for details on installing + sufficiently up-to-date package versions to enable building FRR. + + Newer automake/autoconf/bison is only needed to build the RPM and is **not** + needed to install the binary RPM package. + +2. Install the build dependencies for your platform. Refer to the + platform-specific build documentation on how to do this. + +3. Install the following additional packages:: + + yum install rpm-build net-snmp-devel pam-devel libcap-devel + + If your platform uses systemd:: + + yum install systemd-devel + + If ``yum`` is not present on your system, use ``dnf`` instead. + +3. Checkout FRR:: + + git clone https://github.com/frrouting/frr.git frr + +4. Run Bootstrap and make distribution tar.gz:: + + cd frr + ./bootstrap.sh + ./configure --with-pkg-extra-version=-MyRPMVersion SPHINXBUILD=sphinx-build2.7 + make dist + + .. note:: + + The only ``configure`` option respected when building RPMs is + ``--with-pkg-extra-version``. + +5. Create RPM directory structure and populate with sources:: + + mkdir rpmbuild + mkdir rpmbuild/SOURCES + mkdir rpmbuild/SPECS + cp redhat/*.spec rpmbuild/SPECS/ + cp frr*.tar.gz rpmbuild/SOURCES/ + +6. Edit :file:`rpm/SPECS/frr.spec` with configuration as needed. + + Look at the beginning of the file and adjust the following parameters to + enable or disable features as required:: + + ############### FRRouting (FRR) configure options ################# + # with-feature options + %{!?with_pam: %global with_pam 0 } + %{!?with_ospfclient: %global with_ospfclient 1 } + %{!?with_ospfapi: %global with_ospfapi 1 } + %{!?with_irdp: %global with_irdp 1 } + %{!?with_rtadv: %global with_rtadv 1 } + %{!?with_ldpd: %global with_ldpd 1 } + %{!?with_nhrpd: %global with_nhrpd 1 } + %{!?with_eigrp: %global with_eigrpd 1 } + %{!?with_shared: %global with_shared 1 } + %{!?with_multipath: %global with_multipath 256 } + %{!?frr_user: %global frr_user frr } + %{!?vty_group: %global vty_group frrvty } + %{!?with_fpm: %global with_fpm 0 } + %{!?with_watchfrr: %global with_watchfrr 1 } + %{!?with_bgp_vnc: %global with_bgp_vnc 0 } + %{!?with_pimd: %global with_pimd 1 } + %{!?with_rpki: %global with_rpki 0 } + +7. Build the RPM:: + + rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec + + If building with RPKI, then download and install the additional RPKI + packages from + https://ci1.netdef.org/browse/RPKI-RTRLIB/latestSuccessful/artifact + +If all works correctly, then you should end up with the RPMs under +:file:`rpmbuild/RPMS` and the source RPM under :file:`rpmbuild/SRPMS`. diff --git a/doc/developer/packaging.rst b/doc/developer/packaging.rst index 27e6e155fb..b174a9660c 100644 --- a/doc/developer/packaging.rst +++ b/doc/developer/packaging.rst @@ -7,3 +7,4 @@ Packaging maintainer-release-build packaging-debian + packaging-redhat diff --git a/doc/developer/subdir.am b/doc/developer/subdir.am index d769913674..a0c5e6fc9d 100644 --- a/doc/developer/subdir.am +++ b/doc/developer/subdir.am @@ -5,7 +5,6 @@ dev_RSTFILES = \ doc/developer/bgp-typecodes.rst \ doc/developer/bgpd.rst \ - doc/developer/building-frr-for-openwrt.rst \ doc/developer/building-frr-for-alpine.rst \ doc/developer/building-frr-for-centos6.rst \ doc/developer/building-frr-for-centos7.rst \ @@ -19,6 +18,7 @@ dev_RSTFILES = \ doc/developer/building-frr-for-netbsd7.rst \ doc/developer/building-frr-for-omnios.rst \ doc/developer/building-frr-for-openbsd6.rst \ + doc/developer/building-frr-for-openwrt.rst \ doc/developer/building-frr-for-ubuntu1404.rst \ doc/developer/building-frr-for-ubuntu1604.rst \ doc/developer/building-frr-for-ubuntu1804.rst \ @@ -37,8 +37,9 @@ dev_RSTFILES = \ doc/developer/ospf-api.rst \ doc/developer/ospf-sr.rst \ doc/developer/ospf.rst \ - doc/developer/packaging.rst \ doc/developer/packaging-debian.rst \ + doc/developer/packaging-redhat.rst + doc/developer/packaging.rst \ doc/developer/testing.rst \ doc/developer/topotests-snippets.rst \ doc/developer/topotests.rst \ diff --git a/doc/developer/topotests-snippets.rst b/doc/developer/topotests-snippets.rst index 649229b433..fb3c928a77 100644 --- a/doc/developer/topotests-snippets.rst +++ b/doc/developer/topotests-snippets.rst @@ -48,17 +48,17 @@ A sample of this snippet in a test can be found `here Interacting with equipment ^^^^^^^^^^^^^^^^^^^^^^^^^^ -You might want to interact with the topology equipments during the tests and +You might want to interact with the topology equipment during the tests and there are different ways to do so. Notes: -1. When using the Topogen API, all the equipments code derive from ``Topogear`` +1. When using the Topogen API, all the equipment code derives from ``Topogear`` (`lib/topogen.py <lib/topogen.py>`__). If you feel brave you can look by - yourself how the abstractions that will be mentioned here works. + yourself how the abstractions that will be mentioned here work. 2. When not using the ``Topogen`` API there is only one way to interact with - the equipments, which is by calling the ``mininet`` API functions directly + the equipment, which is by calling the ``mininet`` API functions directly to spawn commands. Interacting with the Linux sandbox @@ -149,7 +149,7 @@ Translating vtysh JSON output into Python structures: .. note:: - ``vtysh_(multi)cmd`` is only available for router type of equipments. + ``vtysh_(multi)cmd`` is only available for router types of equipment. Invoking mininet CLI ^^^^^^^^^^^^^^^^^^^^ @@ -195,7 +195,7 @@ Loading JSON from a file: Comparing JSON output ^^^^^^^^^^^^^^^^^^^^^ -After obtaining JSON output formated with Python data structures, you may use +After obtaining JSON output formatted with Python data structures, you may use it to assert a minimalist schema: .. code:: py diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index aa06c8dffd..605b9c9a0c 100644 --- a/doc/developer/topotests.rst +++ b/doc/developer/topotests.rst @@ -151,7 +151,7 @@ Collect Memory Leak Information ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FRR processes have the capabilities to report remaining memory allocations upon -exit. To enable the reporting of the memory, define an enviroment variable +exit. To enable the reporting of the memory, define an environment variable ``TOPOTESTS_CHECK_MEMLEAK`` with the file prefix, i.e.:: export TOPOTESTS_CHECK_MEMLEAK="/home/mydir/memleak_" @@ -410,7 +410,7 @@ Defining the Topology The first step to write a new test is to define the topology. This step can be done in many ways, but the recommended is to use Graphviz to generate a drawing of the topology. It allows us to see the topology graphically and to see the -names of equipments, links and addresses. +names of equipment, links and addresses. Here is an example of Graphviz dot file that generates the template topology :file:`tests/topotests/example-test/test_template.dot` (the inlined code might diff --git a/doc/developer/vtysh.rst b/doc/developer/vtysh.rst index 4a52eb0544..160676a7b1 100644 --- a/doc/developer/vtysh.rst +++ b/doc/developer/vtysh.rst @@ -43,7 +43,7 @@ simplifying the output. This is discussed in :ref:`vtysh-configuration`. Command Extraction ------------------ -When VTYSH is a built, a Perl script named :file:`extract.pl` searches the FRR +When VTYSH is built, a Perl script named :file:`extract.pl` searches the FRR codebase looking for ``DEFUN``'s. It extracts these ``DEFUN``'s, transforms them into ``DEFSH``'s and appends them to ``vtysh_cmd.c``. Each ``DEFSH`` contains the name of the command plus ``_vtysh``, as well as a flag that @@ -167,7 +167,7 @@ Protocol VTYSH communicates with FRR daemons by way of domain socket. Each daemon creates its own socket, typically in :file:`/var/run/frr/<daemon>.vty`. The protocol is very simple. In the VTYSH to daemon direction, messages are simply -NULL-terminated strings, whose content are CLI commands. Here is a typical +NUL-terminated strings, whose content are CLI commands. Here is a typical message from VTYSH to a daemon: :: @@ -178,7 +178,7 @@ message from VTYSH to a daemon: 00000010: 6c0a 00 l.. -The response format has some more data in it. First is a NULL-terminated string +The response format has some more data in it. First is a NUL-terminated string containing the plaintext response, which is just the output of the command that was sent in the request. This is displayed to the user. The plaintext response is followed by 3 null marker bytes, followed by a 1-byte status code that diff --git a/doc/developer/workflow.rst b/doc/developer/workflow.rst index 1bb0886fd5..b66392f7ca 100644 --- a/doc/developer/workflow.rst +++ b/doc/developer/workflow.rst @@ -128,7 +128,7 @@ branch is required. The work can be shared by multiple people. In all cases, the must be at least one person that is in charge of the maintenance branch. The person on people responsible for a maintenance branch must be a FRR maintainer. Note that they may choose to abandon support for the maintenance branch at any time. If -noone takes over the responsibility of the LTS branch, then the support will be +no one takes over the responsibility of the LTS branch, then the support will be discontinued. The LTS branch duties are the following ones: @@ -371,7 +371,7 @@ system in which submissions from an individual representing one company should be merged by someone unaffiliated with that company. Guidelines for code review -"""""""""""""""""""""""""" +-------------------------- - As a rule of thumb, the depth of the review should be proportional to the scope and / or impact of the patch. diff --git a/doc/user/basic.rst b/doc/user/basic.rst index 8201fdf1b9..8fbea29ee7 100644 --- a/doc/user/basic.rst +++ b/doc/user/basic.rst @@ -390,7 +390,7 @@ Terminal Mode Commands .. index:: find COMMAND... .. clicmd:: find COMMAND... - This commmand performs a simple substring search across all defined commands + This command performs a simple substring search across all defined commands in all modes. As an example, suppose you're in enable mode and can't remember where the command to turn OSPF segment routing on is: diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst index 3aee1940bc..be331ffb99 100644 --- a/doc/user/bgp.rst +++ b/doc/user/bgp.rst @@ -1145,7 +1145,7 @@ is 4 octet long. The following format is used to define the community value. ``graceful-shutdown`` represents well-known communities value ``GRACEFUL_SHUTDOWN`` ``0xFFFF0000`` ``65535:0``. :rfc:`8326` implements the purpose Graceful BGP Session Shutdown to reduce the amount of - lost traffic when taking BGP sessions down for maintainance. The use + lost traffic when taking BGP sessions down for maintenance. The use of the community needs to be supported from your peers side to actually have any effect. @@ -1176,20 +1176,20 @@ is 4 octet long. The following format is used to define the community value. ``llgr-stale`` ``llgr-stale`` represents well-known communities value ``LLGR_STALE`` ``0xFFFF0006`` ``65535:6``. - Assigned and intented only for use with routers supporting the + Assigned and intended only for use with routers supporting the Long-lived Graceful Restart Capability as described in [Draft-IETF-uttaro-idr-bgp-persistence]_. - Routers recieving routes with this community may (depending on + Routers receiving routes with this community may (depending on implementation) choose allow to reject or modify routes on the presence or absence of this community. ``no-llgr`` ``no-llgr`` represents well-known communities value ``NO_LLGR`` ``0xFFFF0007`` ``65535:7``. - Assigned and intented only for use with routers supporting the + Assigned and intended only for use with routers supporting the Long-lived Graceful Restart Capability as described in [Draft-IETF-uttaro-idr-bgp-persistence]_. - Routers recieving routes with this community may (depending on + Routers receiving routes with this community may (depending on implementation) choose allow to reject or modify routes on the presence or absence of this community. @@ -1251,7 +1251,7 @@ UPDATE messages. There are two types of community list: standard - This type accepts an explicit value for the atttribute. + This type accepts an explicit value for the attribute. expanded This type accepts a regular expression. Because the regex must be @@ -2481,7 +2481,7 @@ certainly contains silly mistakes, if not serious flaws. route-map rm-no-export permit 20 ! route-map rm-blackhole permit 10 - description blackhole, up-pref and ensure it cant escape this AS + description blackhole, up-pref and ensure it cannot escape this AS set ip next-hop 127.0.0.1 set local-preference 10 set community additive no-export diff --git a/doc/user/flowspec.rst b/doc/user/flowspec.rst index f6af88cac8..b274afe8a2 100644 --- a/doc/user/flowspec.rst +++ b/doc/user/flowspec.rst @@ -167,7 +167,7 @@ set. That VRF will then be selected. The below full configuration example depicts how Route Targets are configured and how VRFs and cross VRF configuration is done. Note that the VRF are mapped on Linux Network Namespaces. For data traffic to cross VRF boundaries, virtual ethernet -interfaces are created with private IP adressing scheme. +interfaces are created with private IP addressing scheme. .. code-block:: frr @@ -322,7 +322,7 @@ There are some other known issues: - The validation procedure depicted in :rfc:`5575` is not available. This validation procedure has not been implemented, as this feature was not - used in the existing setups you shared wih us. + used in the existing setups you shared with us. - The filtering action shaper value, if positive, is not used to apply shaping. diff --git a/doc/user/installation.rst b/doc/user/installation.rst index e191ebd035..964297292f 100644 --- a/doc/user/installation.rst +++ b/doc/user/installation.rst @@ -272,7 +272,7 @@ options from the list below. .. option:: --enable-multipath=X Compile FRR with up to X way ECMP supported. This number can be from 0-999. - For backwards compatability with older configure options when setting X = 0, + For backwards compatibility with older configure options when setting X = 0, we will build FRR with 64 way ECMP. This is needed because there are hardcoded arrays that FRR builds towards, so we need to know how big to make these arrays at build time. Additionally if this parameter is diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst index b6a7cd5de0..ad0a8639a3 100644 --- a/doc/user/ospfd.rst +++ b/doc/user/ospfd.rst @@ -218,7 +218,7 @@ To start OSPF process you have to specify the OSPF router. SPF-triggering event occurs within the hold-time of the previous SPF calculation. - This command supercedes the *timers spf* command in previous FRR + This command supersedes the *timers spf* command in previous FRR releases. .. index:: max-metric router-lsa [on-startup|on-shutdown] (5-86400) diff --git a/doc/user/pbr.rst b/doc/user/pbr.rst index 638767c557..6230bf777a 100644 --- a/doc/user/pbr.rst +++ b/doc/user/pbr.rst @@ -88,7 +88,7 @@ end destination. When a incoming packet matches the destination prefix specified, take the packet and forward according to the nexthops specified. This command accepts - both v4 and v6 prefixes. This command is used in conjuction of the + both v4 and v6 prefixes. This command is used in conjunction of the :clicmd:`match src-ip PREFIX` command for matching. .. clicmd:: set nexthop-group NAME diff --git a/doc/user/pim.rst b/doc/user/pim.rst index feb77db1e1..f4611c520b 100644 --- a/doc/user/pim.rst +++ b/doc/user/pim.rst @@ -210,8 +210,8 @@ is in a vrf, enter the interface command with the vrf keyword at the end. Set the IGMP version used on this interface. The default value is 3. -.. index:: ip multicat boundary oil WORD -.. clicmd:: ip multicat boundary oil WORD +.. index:: ip multicast boundary oil WORD +.. clicmd:: ip multicast boundary oil WORD Set a pim multicast boundary, based upon the WORD prefix-list. If a pim join or IGMP report is received on this interface and the Group is denied by the diff --git a/doc/user/sharp.rst b/doc/user/sharp.rst index ca8f1f512f..4568c2a901 100644 --- a/doc/user/sharp.rst +++ b/doc/user/sharp.rst @@ -29,7 +29,7 @@ documented elsewhere. Using SHARP =========== -All sharp commands are under the enable node and preceeded by the ``sharp`` +All sharp commands are under the enable node and preceded by the ``sharp`` keyword. At present, no sharp commands will be preserved in the config. .. index:: sharp install diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index 9dfe1ea39c..a7bf0c74da 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -380,7 +380,7 @@ At startup, FRR detects the presence of that file. It detects that the file statistics information matches the same file statistics information as `/proc/self/ns/net` ( through stat() function). As statistics information matches, then `vrf0` stands for the new default namespace name. -Consequently, the VRF naming `Default` will be overriden by the new discovered +Consequently, the VRF naming `Default` will be overridden by the new discovered namespace name `vrf0`. For those who don't use VRF backend with *Linux network namespace*, it is @@ -422,7 +422,7 @@ in routing entry, and can be configured like a route: .. index:: [no] ip route NETWORK MASK GATEWAY|INTERFACE label LABEL .. clicmd:: [no] ip route NETWORK MASK GATEWAY|INTERFACE label LABEL - NETWORK ans MASK stand for the IP prefix entry to be added as static + NETWORK and MASK stand for the IP prefix entry to be added as static route entry. GATEWAY is the gateway IP address to reach, in order to reach the prefix. INTERFACE is the interface behind which the prefix is located. diff --git a/redhat/README.rpm_build.md b/redhat/README.rpm_build.md deleted file mode 100644 index a3f095786d..0000000000 --- a/redhat/README.rpm_build.md +++ /dev/null @@ -1,119 +0,0 @@ -Building your own FRRouting RPM -====================================== -(Tested on CentOS 6, CentOS 7 and Fedora 24.) - -1. On CentOS 6 (which doesn't provide a bison/automake/autoconf of a recent enough version): - - Check out ../doc/developer/building-frr-for-centos6.rst for details on installing - a bison/automake/autoconf to support frr building. - - Newer automake/autoconf/bison is only needed to build the rpm and is - **not** needed to install the binary rpm package - -2. Install the build packages as documented in doc/developer/building-frr-for-xxxxx.rst and the following additional packages: - - yum install rpm-build net-snmp-devel pam-devel libcap-devel - - Additionally, on systems with systemd (CentOS 7, Fedora) - - yum install systemd-devel - - (use `dnf install` on new Fedora instead of `yum install`) - -3. Checkout FRR under a **unpriviledged** user account - - git clone https://github.com/frrouting/frr.git frr - -4. Run Bootstrap and make distribution tar.gz - - cd frr - ./bootstrap.sh - ./configure --with-pkg-extra-version=-MyRPMVersion \ - SPHINXBUILD=sphinx-build2.7 - make dist - - Note: configure parameters are not important for the RPM building - except the `with-pkg-extra-version` if you want to give the RPM a specific name to - mark your own unoffical build - -5. Create RPM directory structure and populate with sources - - mkdir rpmbuild - mkdir rpmbuild/SOURCES - mkdir rpmbuild/SPECS - cp redhat/*.spec rpmbuild/SPECS/ - cp frr*.tar.gz rpmbuild/SOURCES/ - -6. Edit rpm/SPECS/frr.spec with configuration as needed - Look at the beginning of the file and adjust the following parameters to enable or disable features as required: - - ############### FRRouting (FRR) configure options ################# - # with-feature options - %{!?with_pam: %global with_pam 0 } - %{!?with_ospfclient: %global with_ospfclient 1 } - %{!?with_ospfapi: %global with_ospfapi 1 } - %{!?with_irdp: %global with_irdp 1 } - %{!?with_rtadv: %global with_rtadv 1 } - %{!?with_ldpd: %global with_ldpd 1 } - %{!?with_nhrpd: %global with_nhrpd 1 } - %{!?with_eigrp: %global with_eigrpd 1 } - %{!?with_shared: %global with_shared 1 } - %{!?with_multipath: %global with_multipath 256 } - %{!?frr_user: %global frr_user frr } - %{!?vty_group: %global vty_group frrvty } - %{!?with_fpm: %global with_fpm 0 } - %{!?with_watchfrr: %global with_watchfrr 1 } - %{!?with_bgp_vnc: %global with_bgp_vnc 0 } - %{!?with_pimd: %global with_pimd 1 } - %{!?with_rpki: %global with_rpki 0 } - -7. Build the RPM - - rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec - - If building with RPKI, then download and install the additional RPKI - packages from - https://ci1.netdef.org/browse/RPKI-RTRLIB/latestSuccessful/artifact - -DONE. - -If all works correctly, then you should end up with the RPMs under -`rpmbuild/RPMS` and the Source RPM under `rpmbuild/SRPMS` - - -Enabling daemons after installation of the package: ---------------------------------------------------- - -### init.d based systems (ie CentOS 6): - -1. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.) - -2. Enable the daemons as needed to run after boot (Zebra is mandatory) - - chkconfig frr on - -3. Check your firewall / IPtables to make sure the routing protocols are -allowed. - -5. Start the FRR daemons (or reboot) - - service frr start - -Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`. - - -### systemd based systems (ie CentOS 7, Fedora 24) - -1. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.) - -2. Enable the frr daemons to run after boot. - - systemctl enable frr - -2. Check your firewall / IPtables to make sure the routing protocols are -allowed. - -3. Start the daemons (or reboot) - - systemctl start frr - -Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`. - |
