]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
8 years agoMerge pull request #294 from opensourcerouting/modules
Donald Sharp [Tue, 4 Apr 2017 15:55:00 +0000 (11:55 -0400)]
Merge pull request #294 from opensourcerouting/modules

Loadable module support

8 years agovtysh: handle "show modules" like "show memory" 294/head
David Lamparter [Tue, 4 Apr 2017 14:12:59 +0000 (16:12 +0200)]
vtysh: handle "show modules" like "show memory"

Preface with line identifying which daemon it applies to.
[Also fixes a missed "plugin" -> "module" replace.]

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoMerge pull request #322 from qlyoung/fix-distance-commands
David Lamparter [Tue, 4 Apr 2017 13:59:12 +0000 (15:59 +0200)]
Merge pull request #322 from qlyoung/fix-distance-commands

ospfd, ospf6d: fix distance commands

8 years agoMerge pull request #321 from donaldsharp/speed
David Lamparter [Tue, 4 Apr 2017 13:58:11 +0000 (15:58 +0200)]
Merge pull request #321 from donaldsharp/speed

Speedy McSpeederson

8 years agoMerge pull request #314 from donaldsharp/scan-build
David Lamparter [Tue, 4 Apr 2017 13:57:00 +0000 (15:57 +0200)]
Merge pull request #314 from donaldsharp/scan-build

Scan build

8 years agoMerge pull request #324 from opensourcerouting/zebra-v4v6-typos
Donald Sharp [Tue, 4 Apr 2017 13:55:58 +0000 (09:55 -0400)]
Merge pull request #324 from opensourcerouting/zebra-v4v6-typos

zebra: fix v4/v6 typos in some show commands

8 years agozebra: Fix printf formatting 321/head
Donald Sharp [Tue, 4 Apr 2017 11:50:31 +0000 (07:50 -0400)]
zebra: Fix printf formatting

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agozebra: fix v4/v6 typos in some show commands 324/head
Renato Westphal [Tue, 4 Apr 2017 00:14:18 +0000 (21:14 -0300)]
zebra: fix v4/v6 typos in some show commands

This fixes a few problems like this one:
vtysh# show ipv6 route ospf6
Unknown route type

Also, replace SAFI_UNICAST with SAFI_MULTICAST in the "show ipv6 mroute
vrf all" command.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoMerge pull request #323 from LabNConsulting/working/master/patch/install1
Donald Sharp [Mon, 3 Apr 2017 22:55:30 +0000 (18:55 -0400)]
Merge pull request #323 from LabNConsulting/working/master/patch/install1

Fix a couple of centos related install issues

8 years agolib, zebra: Fix CR comments
Donald Sharp [Mon, 3 Apr 2017 22:28:26 +0000 (18:28 -0400)]
lib, zebra: Fix CR comments

lib -> Add a bit of documentation about what units we are in.
zebra -> Fix failure case to be a bit better.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoredhat/frr.spec.in: fix typo 323/head
Lou Berger [Mon, 3 Apr 2017 21:32:03 +0000 (17:32 -0400)]
redhat/frr.spec.in: fix typo

Signed-off-by: Lou Berger <lberger@labn.net>
8 years agodoc: fix some omissions in centos instructions
Lou Berger [Mon, 3 Apr 2017 21:30:31 +0000 (17:30 -0400)]
doc: fix some omissions in centos instructions

Signed-off-by: Lou Berger <lberger@labn.net>
8 years agoospfd, ospf6d: fix distance commands 322/head
Quentin Young [Mon, 3 Apr 2017 20:17:12 +0000 (20:17 +0000)]
ospfd, ospf6d: fix distance commands

OSPF distance commands were broken in a variety of ways. Fix 'em.

* `distance ospf` and `distance ospf6` were accepted commands
* Inconsistent doc strings
* Make use of {keyword|tokens}
* Add ability to reset specific distance without specifying a value
  Ex: ~# no distance ospf6 intra

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
8 years agoMerge pull request #316 from qlyoung/fix-logc
Jafar Al-Gharaibeh [Mon, 3 Apr 2017 19:43:50 +0000 (14:43 -0500)]
Merge pull request #316 from qlyoung/fix-logc

lib: fix proto_redistnum() oversight from #257

8 years agozebra: Display new speed information in 'show int..' command
Donald Sharp [Thu, 30 Mar 2017 20:54:15 +0000 (16:54 -0400)]
zebra: Display new speed information in 'show int..' command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agozebra: Retrieve interface speed when creating interface
Donald Sharp [Thu, 30 Mar 2017 19:51:29 +0000 (15:51 -0400)]
zebra: Retrieve interface speed when creating interface

When we get notification from the kernel about the creation
of a new interface, retrieve the speed of it from the kernel

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agolib, zebra: Add ability to pass interface speed up from zebra
Donald Sharp [Thu, 30 Mar 2017 19:37:22 +0000 (15:37 -0400)]
lib, zebra: Add ability to pass interface speed up from zebra

This is a prepatory commit for future improvements.

Add a change to the zapi to pass the interface speed up.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoMerge pull request #311 from opensourcerouting/ldpd-vty-simpl
Donald Sharp [Mon, 3 Apr 2017 17:49:30 +0000 (13:49 -0400)]
Merge pull request #311 from opensourcerouting/ldpd-vty-simpl

ldpd: simplify CLI code + small fixes

8 years agolib: fix proto_redistnum() oversight from #257 316/head
Quentin Young [Sun, 2 Apr 2017 23:21:09 +0000 (23:21 +0000)]
lib: fix proto_redistnum() oversight from #257

proto_redistnum() now accepts full protocol strings and not partial
names per #10

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
8 years agoisisd: Fix some various clang warnings 314/head
Donald Sharp [Sat, 1 Apr 2017 12:42:19 +0000 (08:42 -0400)]
isisd: Fix some various clang warnings

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agonhrpd: Fix value set but never used.
Donald Sharp [Fri, 31 Mar 2017 21:00:26 +0000 (17:00 -0400)]
nhrpd: Fix value set but never used.

The nbma_addr value is set but never used.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cleanup termination to avoid possible null ptr deref
Donald Sharp [Fri, 31 Mar 2017 20:56:26 +0000 (16:56 -0400)]
pimd: Cleanup termination to avoid possible null ptr deref

When terminating pim, there existed( albeit small ) the chance
to cause a crash.  Cleanup the termination to not have
that chance.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix incorrect indentation
Donald Sharp [Fri, 31 Mar 2017 20:50:08 +0000 (16:50 -0400)]
pimd: Fix incorrect indentation

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Remove impossible conditions from test
Donald Sharp [Fri, 31 Mar 2017 20:43:36 +0000 (16:43 -0400)]
pimd: Remove impossible conditions from test

It is impossible for the list->cmp function to
ever be handed NULL values as the arguments.

Clean up this in the code.

Additionally consolidate the exact same two functions
into 1 function.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cleanup api and stop crash
Donald Sharp [Fri, 31 Mar 2017 20:38:29 +0000 (16:38 -0400)]
pimd: Cleanup api and stop crash

There is no need for a function that calls another function.

Additionally, nexthop_updates from zebra can be either
ZEBRA_NEXTHOP_UPDATE -or-
ZEBRA_IMPORT_CHECK_UPDATE

If we were to receive a IMPORT_CHECK_UPDATE the code
would cause a immediate crash.  Fix this

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cleanup unused variable write
Donald Sharp [Fri, 31 Mar 2017 20:28:22 +0000 (16:28 -0400)]
pimd: Cleanup unused variable write

There exists a common pattern in pim where we were setting
a variable to a value in the error case when we would no
longer need it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoldpd: do not consume vty_conf when updating the configuration 311/head
Renato Westphal [Thu, 30 Mar 2017 14:33:08 +0000 (11:33 -0300)]
ldpd: do not consume vty_conf when updating the configuration

David Lamparter gave the idea of keeping vty_conf as a permanent copy of
ldpd_conf in order to simplify the CLI code and facilitate the integration
with his cap'n proto framework in the future. Doing this demanded quite
some effort but it was worth it as the code looks much better now.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: extend the ldp_config_normalize() function
Renato Westphal [Fri, 31 Mar 2017 01:15:33 +0000 (22:15 -0300)]
ldpd: extend the ldp_config_normalize() function

* remove superfluous parts of the configuration when possible
  (e.g. interfaces that are disabled for both IPv4 and IPv6);
* move the check of whether the pseudowire is active or not from
  merge_l2vpns() to ldp_config_normalize() where it belongs.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: fix configuration of non-existing VPLS interfaces and pseudowires
Renato Westphal [Fri, 31 Mar 2017 00:58:47 +0000 (21:58 -0300)]
ldpd: fix configuration of non-existing VPLS interfaces and pseudowires

If we don't know the ifindex, flags, etc of an interface at the time it's
configured, we should make sure that once this information is available
the appropriate structures are updated.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: remove the interface vty node
Renato Westphal [Thu, 30 Mar 2017 23:26:17 +0000 (20:26 -0300)]
ldpd: remove the interface vty node

ldpd uses a hierarchical configuration model where all commands are
defined inside the "mpls ldp" node and its subnodes. The idea is to keep
all LDP configuration in a single place to keep things simple. With that
said, we can remove the "config-if" node from ldpd because we already
have a separate node ("config-ldp-af-if") for LDP-related interface
specific commands.

Example:
vtysh(config)# mpls ldp
vtysh(config-ldp)# address-family ipv4
vtysh(config-ldp-af)# interface eth1
vtysh(config-ldp-af-if)# discovery hello ?
  holdtime  Hello holdtime
  interval  Hello interval

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: no need to synchronize pseudowires with LSPs anymore
Renato Westphal [Thu, 30 Mar 2017 23:19:16 +0000 (20:19 -0300)]
ldpd: no need to synchronize pseudowires with LSPs anymore

Since commit 595b4be, the l2vpn_pw_ok() function doesn't check if there's
a working LSP to the remote end of the pseudowire (we assume that zebra
will do that for us). With that said, the l2vpn_sync_pws() function is
not necessary anymore.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: fix harmless maybe-uninitialized warning
Renato Westphal [Thu, 30 Mar 2017 15:33:46 +0000 (12:33 -0300)]
ldpd: fix harmless maybe-uninitialized warning

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoMerge pull request #291 from AnuradhaKaruppiah/pim-ssm
Jafar Al-Gharaibeh [Fri, 31 Mar 2017 05:15:23 +0000 (00:15 -0500)]
Merge pull request #291 from AnuradhaKaruppiah/pim-ssm

Pim ssm

8 years agoMerge branch 'master' into pim-ssm 291/head
Donald Sharp [Thu, 30 Mar 2017 21:20:34 +0000 (16:20 -0500)]
Merge branch 'master' into pim-ssm

8 years agoMerge pull request #301 from qlyoung/nhrpd-gitignore
Jafar Al-Gharaibeh [Thu, 30 Mar 2017 21:15:18 +0000 (16:15 -0500)]
Merge pull request #301 from qlyoung/nhrpd-gitignore

nhrpd: add .gitignore

8 years agoMerge pull request #305 from opensourcerouting/build-doc-updates
Donald Sharp [Thu, 30 Mar 2017 19:23:15 +0000 (14:23 -0500)]
Merge pull request #305 from opensourcerouting/build-doc-updates

doc: Update for the Building_FRR docs to include new requirements

8 years agoMerge pull request #297 from opensourcerouting/ldpd-openbsd
Donald Sharp [Thu, 30 Mar 2017 11:23:59 +0000 (06:23 -0500)]
Merge pull request #297 from opensourcerouting/ldpd-openbsd

Add support for MPLSv6 in OpenBSD + minor fixes

8 years agoMerge pull request #296 from opensourcerouting/ldpd-sighup
Donald Sharp [Thu, 30 Mar 2017 11:18:25 +0000 (06:18 -0500)]
Merge pull request #296 from opensourcerouting/ldpd-sighup

ldpd: do a full configuration reload upon receiving a SIGHUP

8 years agonhrpd: add .gitignore 301/head
Quentin Young [Wed, 29 Mar 2017 23:40:55 +0000 (23:40 +0000)]
nhrpd: add .gitignore

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
8 years agolib: sandbox: print vtysh daemon targets
David Lamparter [Wed, 22 Mar 2017 09:45:51 +0000 (10:45 +0100)]
lib: sandbox: print vtysh daemon targets

This is very useful to check whether a command disappeared from a
specific daemon (by comparing against an earlier output of
"grammar find-ambiguous printall nodescan")

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agovtysh: parsing fixes on distribute-list
David Lamparter [Wed, 22 Mar 2017 09:22:14 +0000 (10:22 +0100)]
vtysh: parsing fixes on distribute-list

The vtysh preprocessing stuff doesn't like the first argument to
install_element() being something other than a _NODE constant, and the
comment hack wasn't cutting it... just expand this.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agovtysh: remove ignore list
David Lamparter [Wed, 22 Mar 2017 09:39:06 +0000 (10:39 +0100)]
vtysh: remove ignore list

With DEFUN_NOSH in place everywhere, this is useless.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: apply DEFUN_NOSH for node-switch CLI commands
David Lamparter [Wed, 22 Mar 2017 09:38:22 +0000 (10:38 +0100)]
*: apply DEFUN_NOSH for node-switch CLI commands

These have copies in vtysh that do the node-switch locally and are
listed in extract.pl's ignore list.  The ignore list however is
redundant since DEFUN_NOSH does the same thing...

ldpd is a bit hacky, but Renato is reworking this anyway.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agodoc: minor tweaks in the build instructions 297/head
Renato Westphal [Tue, 28 Mar 2017 00:39:27 +0000 (21:39 -0300)]
doc: minor tweaks in the build instructions

* ldpd is built by default in all platforms, it's not necessary to
  provide --enable-ldpd anymore;
* Remove comment about ldpd not being tested on OpenBSD, it works very
  well on this platform;
* Provide instructions to enable MPLS forwarding in OpenBSD.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agozebra-mpls: replace legacy bzero by memset
Renato Westphal [Tue, 28 Mar 2017 00:17:37 +0000 (21:17 -0300)]
zebra-mpls: replace legacy bzero by memset

bzero() was deprecated in POSIX.1-2001 and removed in POSIX.1-2008 in
deference to memset().

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agozebra-mpls: add support for MPLSv6 in OpenBSD
Renato Westphal [Tue, 28 Mar 2017 00:13:29 +0000 (21:13 -0300)]
zebra-mpls: add support for MPLSv6 in OpenBSD

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: replace all occurrences of '\n' with VTY_NEWLINE
Renato Westphal [Mon, 27 Mar 2017 23:14:09 +0000 (20:14 -0300)]
ldpd: replace all occurrences of '\n' with VTY_NEWLINE

The format of the terse output of several ldpd's show commands was copied
from the OpenBSD's ldpctl(8) control program. In the process of doing
that I forgot to replace the occurrences of '\n' with VTY_NEWLINE.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: update pledge promise in lde
Renato Westphal [Mon, 27 Mar 2017 18:03:34 +0000 (15:03 -0300)]
ldpd: update pledge promise in lde

With the introduction of the label manager, now lde needs to pledge
"unix" as well in order to connect to zebra.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: fix pseudowire merge algorithm 296/head
Renato Westphal [Sat, 25 Mar 2017 23:57:03 +0000 (20:57 -0300)]
ldpd: fix pseudowire merge algorithm

The previous algorithm wasn't failsafe for full configuration reloads
where several pseudowires can be inserted or removed at the same
time. This patch introduces a much simpler logic that solves the problem
in a better way.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: remove a few unnecessary functions
Renato Westphal [Sat, 25 Mar 2017 23:52:42 +0000 (20:52 -0300)]
ldpd: remove a few unnecessary functions

The original ldpd(8) daemon in OpenBSD doesn't allow the user to put
non-existing interfaces in the configuration file. For this reason,
the l2vpn_if_find() and l2vpn_pw_find() functions take an ifindex as
an argument.  In FRR's ldpd we can put non-existing interfaces in the
configuration, and they are activated as soon as they are available. For
this reason, we can't lookup interfaces by their ifindex in this port.
The l2vpn_if_find_name() and l2vpn_pw_find_name() functions were
introduced to address this issue. However, since the "find-by-ifindex"
functions are not being used anymore, we can just remove them and rename
the *_find_name() functions removing the "_name" suffix.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: do a full configuration reload upon receiving a SIGHUP
Renato Westphal [Wed, 22 Mar 2017 15:53:36 +0000 (12:53 -0300)]
ldpd: do a full configuration reload upon receiving a SIGHUP

The rationale here is to do something very similar to what the original
OpenBSD's ldpd(8) does to reload configuration files:
* create a new empty base configuration (vty_conf);
* parse the configuration file and store the result in vty_conf;
* merge the new configuration into the current configuration.

To do this, introduce a new global variable called "sighup" so that ldpd
doesn't attempt to merge vty_conf into ldpd_conf for each command in
the configuration file, which would be very disruptive. vty_conf should
be merged only after the whole configuration file is parsed in order to
avoid taking actions like shutting down neighbors when not necessary.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: ignore the SIGHUP signal in the child processes
Renato Westphal [Sun, 26 Mar 2017 00:28:13 +0000 (21:28 -0300)]
ldpd: ignore the SIGHUP signal in the child processes

Only the parent process should handle the SIGHUP signal, but we need
to make sure that this signal is ignored in the child processes so a
command like "killall -SIGHUP ldpd" won't kill ldpd.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: simplify handling of configuration commands
Renato Westphal [Thu, 23 Mar 2017 17:49:28 +0000 (14:49 -0300)]
ldpd: simplify handling of configuration commands

The logic to make configuration changes in ldpd is as follows:
1 - duplicate the current configuration;
2 - modify the duplicated configuration (delta);
3 - merge the duplicated configuration into the current configuration.

We can however change things a little bit in order to simplify the code.

If we provide a global vty_conf variable and make sure that it's
always an up-to-date duplicate of ldpd_conf, then we don't need to call
ldp_dup_config() in the callback of each configuration command. Instead
of that, we just need to duplicate ldpd_conf in the startup of the daemon
and in the end of the ldp_reload() function. Doing this is safe because,
due to the single-threaded nature of the parent process, it's impossible
to have multiple requests to change the configuration at the same time.

Also, we can remove the *_ref() functions and do something much simpler
instead.  The problem we have to deal with here is that VTY_GET_CONTEXT()
returns a pointer to an element of ldpd_conf, and what we want is a
pointer to an element of vty_conf (e.g. an l2vpn).  To solve this,
we just need to look for the equivalent element inside vty_conf using
standard functions from ldpd like l2vpn_find() and others.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: drop privileges earlier in the parent process
Renato Westphal [Wed, 22 Mar 2017 19:23:46 +0000 (16:23 -0300)]
ldpd: drop privileges earlier in the parent process

This solves a bug where log files created with "log file" were being
created root-owned. So, inserting the "log file" command multiple times
with the same path would fail giving a permission denied error.

Also, rearrange the main() function to call start_child() as soon as
possible to avoid a bunch of unnecessary initializations in the forked
processes.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoMerge pull request #292 from donaldsharp/sgrpt_prune
David Lamparter [Sat, 25 Mar 2017 09:10:22 +0000 (10:10 +0100)]
Merge pull request #292 from donaldsharp/sgrpt_prune

Sgrpt prune

8 years agodoc: document loadable module support
David Lamparter [Sat, 25 Mar 2017 09:05:19 +0000 (10:05 +0100)]
doc: document loadable module support

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agodoc: Update for the Building_FRR docs to include new requirements 305/head
Martin Winter [Sat, 25 Mar 2017 07:57:53 +0000 (00:57 -0700)]
doc: Update for the Building_FRR docs to include new requirements

* Added libc-ares
* Added python-dev

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
8 years agozebra: fpm: convert into module
David Lamparter [Sun, 12 Feb 2017 23:29:37 +0000 (00:29 +0100)]
zebra: fpm: convert into module

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: snmp: convert into modules
David Lamparter [Sun, 12 Jun 2016 15:52:50 +0000 (17:52 +0200)]
*: snmp: convert into modules

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: use hooks for sending SNMP traps
David Lamparter [Sun, 12 Jun 2016 15:32:23 +0000 (17:32 +0200)]
*: use hooks for sending SNMP traps

This means there are no ties into the SNMP code anymore other than the
init call at startup.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobuild: split off libfrrsnmp
David Lamparter [Mon, 13 Jun 2016 13:44:26 +0000 (15:44 +0200)]
build: split off libfrrsnmp

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: add hook infrastructure
David Lamparter [Sun, 12 Jun 2016 15:31:50 +0000 (17:31 +0200)]
lib: add hook infrastructure

Please refer to lib/hook.h for a description/documentation.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: add "show modules" CLI command
David Lamparter [Sun, 12 Feb 2017 22:23:02 +0000 (23:23 +0100)]
lib: add "show modules" CLI command

(for simplicity, this is stuffed in with memory_vty.c)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: dynamic module loading
David Lamparter [Tue, 31 May 2016 17:25:46 +0000 (19:25 +0200)]
lib: dynamic module loading

This adds a "-M" option to each daemon, to load dynamic modules at
startup.  Modules are by default located in /usr/lib/frr/modules (lib64
if appropriate).  Unloading or loading at runtime is not supported at
this point to keep things simple.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: remove unused add_snmp_pollfds()
David Lamparter [Sun, 12 Feb 2017 21:40:11 +0000 (22:40 +0100)]
lib: remove unused add_snmp_pollfds()

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoripd: fix snmp compile
David Lamparter [Fri, 24 Mar 2017 09:56:35 +0000 (10:56 +0100)]
ripd: fix snmp compile

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agozebra: fpm: fix protobuf compile
David Lamparter [Sun, 12 Feb 2017 23:35:43 +0000 (00:35 +0100)]
zebra: fpm: fix protobuf compile

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoMerge pull request #286 from opensourcerouting/ldpd-tshoot
Donald Sharp [Fri, 24 Mar 2017 11:17:06 +0000 (07:17 -0400)]
Merge pull request #286 from opensourcerouting/ldpd-tshoot

Ldpd tshoot

8 years agopimd: Fix pim_ssm build failure by including zebra.h
anuradhak [Thu, 23 Mar 2017 21:20:56 +0000 (14:20 -0700)]
pimd: Fix pim_ssm build failure by including zebra.h

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
8 years agopimd: del_oif and pim_channel_del_oif are the same function 292/head
Donald Sharp [Thu, 23 Mar 2017 11:47:41 +0000 (07:47 -0400)]
pimd: del_oif and pim_channel_del_oif are the same function

These two functions do the exact same thing.  Refactor

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Update inherited_olist when receiving a prune
Donald Sharp [Wed, 22 Mar 2017 14:11:04 +0000 (10:11 -0400)]
pimd: Update inherited_olist when receiving a prune

We were not always updating the inherited_olist
when we received a prune.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix inherited_olist decision for *,G
Donald Sharp [Wed, 22 Mar 2017 14:09:00 +0000 (10:09 -0400)]
pimd: Fix inherited_olist decision for *,G

When we had a *,G join but a Prune S,G,rpt we
were not taking that into account.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: When deleting last intf from an OIL don't delete the mroute
Donald Sharp [Wed, 22 Mar 2017 14:07:18 +0000 (10:07 -0400)]
pimd: When deleting last intf from an OIL don't delete the mroute

In certain conditions when we are deleting the interface
from an OIL do not delete the mroute.  That decision
should be made by the state machine.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Start sending (S,G,rpt) Prune messages
Donald Sharp [Tue, 7 Mar 2017 02:08:12 +0000 (21:08 -0500)]
pimd: Start sending (S,G,rpt) Prune messages

Start sending the (S,G,rpt) Prune messages again.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add ability to upstream to know when to send S,G,rpt Prune
Donald Sharp [Tue, 7 Mar 2017 02:05:46 +0000 (21:05 -0500)]
pimd: Add ability to upstream to know when to send S,G,rpt Prune

Add flag to 'struct pim_upstream' to allow tracking of when
to send (S,G,rpt) Prune message.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Ensure that *,G is first entry in srcs list
Donald Sharp [Tue, 7 Mar 2017 01:44:25 +0000 (20:44 -0500)]
pimd: Ensure that *,G is first entry in srcs list

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Optimize group size figuring out.
Donald Sharp [Fri, 17 Mar 2017 12:07:19 +0000 (08:07 -0400)]
pimd: Optimize group size figuring out.

We were figuring out the group size 2 times.  Figure it out
1 time and then pass it around.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Remove interface type SSM.
anuradhak [Tue, 21 Mar 2017 17:12:30 +0000 (10:12 -0700)]
pimd: Remove interface type SSM.

Interface type has been replaced with the SSM range config. And SSM
groups can now co-exists with ASM groups. I have left the pim ssm
per-interface cli control hidden. It now enables pim-sm with a warning.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-15344
Testing Done: pim-smoke

8 years agopimd: Allow SSM groups to co-exist with ASM groups.
anuradhak [Fri, 17 Mar 2017 18:51:13 +0000 (11:51 -0700)]
pimd: Allow SSM groups to co-exist with ASM groups.

SSM groups (232/8 or user configured SSM range) can exist in the same
multicast network as ASM groups. For such groups all RPT related state
machine operations have to be skipped as defined by section 4.8 of
RFC4601 -
1. Source registration is skipped for SSM groups. For SSM groups mroute
is setup on the FHR when a new multicast flow is rxed; however source
registration (i.e. pimreg join) is skipped. This will let the ASIC black
hole the traffic till a valid OIL is added to the mroute.
2. (*,G) IGMP registrations are ignored for SSM groups.

Sample output:
=============
fhr#  sh ip pim group-type
SSM group range : 232.0.0.0/8
fhr#  sh ip pim group-type 232.1.1.1
Group type: SSM
fhr#  sh ip pim group-type 239.1.1.1
Group type: ASM
fhr#

Sample config:
=============
fhr(config)# ip pim ssm prefix-list ssm-ranges
fhr(config)#

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-15344
Testing Done:
1. SSM/ASM source-registration/igmp-joins.
2. On the fly multicast group type changes.
3. pim-smoke.

8 years agoMerge pull request #290 from bingen/fix_unused_func
Donald Sharp [Thu, 23 Mar 2017 16:37:02 +0000 (12:37 -0400)]
Merge pull request #290 from bingen/fix_unused_func

ldpd: Remove lde_release_label_chunk to avoid warnings

8 years agoldpd: Remove lde_release_label_chunk to avoid warnings 290/head
ßingen [Thu, 23 Mar 2017 16:35:48 +0000 (17:35 +0100)]
ldpd: Remove lde_release_label_chunk to avoid warnings

8 years agoMerge pull request #288 from bingen/fix_coverity_defects
Donald Sharp [Thu, 23 Mar 2017 13:39:15 +0000 (09:39 -0400)]
Merge pull request #288 from bingen/fix_coverity_defects

lm: Fix some errors detected by Coverity Scan

8 years agolm: Fix some errors detected by Coverity Scan 288/head
ßingen [Wed, 22 Mar 2017 10:34:10 +0000 (11:34 +0100)]
lm: Fix some errors detected by Coverity Scan

8 years agoMerge pull request #287 from donaldsharp/int_fix
Renato Westphal [Tue, 21 Mar 2017 17:59:52 +0000 (14:59 -0300)]
Merge pull request #287 from donaldsharp/int_fix

pimd: Fix interface api

8 years agopimd: Fix interface api 287/head
Donald Sharp [Tue, 21 Mar 2017 16:54:55 +0000 (12:54 -0400)]
pimd: Fix interface api

The interface api has change and the pim changes used
the old api.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoMerge pull request #285 from bingen/label_manager_3
Donald Sharp [Tue, 21 Mar 2017 15:40:20 +0000 (11:40 -0400)]
Merge pull request #285 from bingen/label_manager_3

Implement generic label manager

8 years agoMerge pull request #280 from donaldsharp/more_pim
Jafar Al-Gharaibeh [Tue, 21 Mar 2017 15:34:40 +0000 (10:34 -0500)]
Merge pull request #280 from donaldsharp/more_pim

More pim

8 years agoMerge pull request #278 from donaldsharp/interfaces2
Renato Westphal [Tue, 21 Mar 2017 15:33:00 +0000 (12:33 -0300)]
Merge pull request #278 from donaldsharp/interfaces2

Interfaces2

8 years agoldpd: Fix compilation errors n Ubuntu CI 285/head
ßingen [Tue, 21 Mar 2017 11:44:10 +0000 (12:44 +0100)]
ldpd: Fix compilation errors n Ubuntu CI

Signed-off-by: ßingen <bingen@voltanet.io>
8 years agoldpd: Catch signal on reconnect
ßingen [Tue, 21 Mar 2017 11:06:58 +0000 (12:06 +0100)]
ldpd: Catch signal on reconnect

To be able to interrupt LDE when it's trying to reconnect to label
manager.

Signed-off-by: ßingen <bingen@voltanet.io>
8 years agoldpd: Fix bug in get label func
ßingen [Tue, 21 Mar 2017 08:11:15 +0000 (09:11 +0100)]
ldpd: Fix bug in get label func

Signed-off-by: ßingen <bingen@voltanet.io>
8 years agoldpd: provide more detailed information in some show commands 286/head
Renato Westphal [Sun, 19 Mar 2017 00:58:51 +0000 (21:58 -0300)]
ldpd: provide more detailed information in some show commands

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: change the sorting algorithm of adjacencies
Renato Westphal [Sat, 18 Mar 2017 20:05:35 +0000 (17:05 -0300)]
ldpd: change the sorting algorithm of adjacencies

Now the "show mpls ldp discovery" command will display all LDP
adjancencies sorted by address family, neighbor ID and then type (link
or targeted).

Example:
vtysh# show mpls ldp discovery
AF   ID              Type     Source           Holdtime
ipv4 3.3.3.3         Link     rt2-eth1               15
ipv4 3.3.3.3         Link     rt2-eth2               15
ipv4 4.4.4.4         Link     rt2-eth1               15
ipv6 1.1.1.1         Link     rt2-eth0               15
ipv6 3.3.3.3         Link     rt2-eth1               15
ipv6 3.3.3.3         Link     rt2-eth2               15
ipv6 4.4.4.4         Link     rt2-eth1               15

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: add commands to show sent/rcvd capabilities
Renato Westphal [Fri, 17 Mar 2017 23:55:42 +0000 (20:55 -0300)]
ldpd: add commands to show sent/rcvd capabilities

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoldpd: provide both a brief and a detailed version of some show commands
Renato Westphal [Fri, 17 Mar 2017 01:11:15 +0000 (22:11 -0300)]
ldpd: provide both a brief and a detailed version of some show commands

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agoImplement generic label manager
ßingen [Mon, 20 Mar 2017 14:34:49 +0000 (15:34 +0100)]
Implement generic label manager

Label Manager allows to share MPLS label space among different
daemons. Each daemon can request a chunk of consecutive labels and
release it if it doesn't need them anymore. Label Manager stores the
daemon protocol and instance to identify the owner client. It uses them
to perform garbage collection, releasing all label chunks from a client
when it gets disconnected or reconnected.

Additionally, every client can request that the chunk is never garbage
collected. In that case client has the responsibility to release
non-used labels.

Zebra can host the label manager itself (if no -l param is provided) or
connect to an external one using zserv/zclient (providing its address
with -l param).

Client code is in lib/zclient.c, but currently only LDP is using it.

TODO: Allow for custom ranges requests, i.e., specify the start label
besides the chunk.
TODO: Release labels from LDP.

Signed-off-by: Bingen Eguzkitza <bingen@voltanet.io>
8 years agoMerge pull request #282 from opensourcerouting/ldpd-lspcheck
Donald Sharp [Mon, 20 Mar 2017 12:08:38 +0000 (08:08 -0400)]
Merge pull request #282 from opensourcerouting/ldpd-lspcheck

ldpd: remove pseudowire LSP check

8 years agoldpd: remove pseudowire LSP check 282/head
Renato Westphal [Fri, 17 Mar 2017 18:41:04 +0000 (15:41 -0300)]
ldpd: remove pseudowire LSP check

In order to bring a pseudowire up, we must make sure that there's at
least one LSP available to its remote end (otherwise the labeled frames
from the CEs wouldn't reach their destination). We were doing this
check in ldpd, but doing so is very limiting because it doesn't consider
other types of LSPs that might be available (static LSPs, RSVP-TE, SR,
etc). Thus remove this check from the l2vpn_pw_ok() function. Later
on we'll implement a pseudowire manager in zebra which will solve this
problem in a much better way (including notifying ldpd about failures
to install a pseudowire in the kernel/hardware).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
8 years agopimd: Add display of SGRpt state for ifchannel 280/head
Donald Sharp [Fri, 17 Mar 2017 17:46:47 +0000 (13:46 -0400)]
pimd: Add display of SGRpt state for ifchannel

When we get a SGrpt Prune embedded in the *,G Join,
Display the created ifchannel as being SGRpt state.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix connected data structure not being freed
Donald Sharp [Fri, 17 Mar 2017 00:07:08 +0000 (20:07 -0400)]
pimd: Fix connected data structure not being freed

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>