mirror_frr/pimd
Igor Ryzhov f60a11883c lib: allow to create interfaces in non-existing VRFs
It allows FRR to read the interface config even when the necessary VRFs
are not yet created and interfaces are in "wrong" VRFs. Currently, such
config is rejected.

For VRF-lite backend, we don't care at all about the VRF of the inactive
interface. When the interface is created in the OS and becomes active,
we always use its actual VRF instead of the configured one. So there's
no need to reject the config.

For netns backend, we may have multiple interfaces with the same name in
different VRFs. So we care about the VRF of inactive interfaces. And we
must allow to preconfigure the interface in a VRF even before it is
moved to the corresponding netns. From now on, we allow to create
multiple configs for the same interface name in different VRFs and
the necessary config is applied once the OS interface is moved to the
corresponding netns.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-19 15:29:51 +03:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
AUTHORS pimd: Remove unnecessary QuaggaId 2016-12-21 20:26:03 -05:00
CAVEATS pimd: added mtrace caveat 2018-02-27 14:03:39 +01:00
COMMANDS pimd: show ip igmp statistics command 2018-05-04 17:05:19 +02:00
COPYING pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
DEBUG pimd: Cleanup the headers. 2017-01-19 10:01:02 -05:00
LINUX_KERNEL_MROUTE_MFC pimd: Remove unnecessary QuaggaId 2016-12-21 20:26:03 -05:00
Makefile build: non-recursive pimd 2017-09-07 16:20:42 +02:00
mtracebis_netlink.c pimd ripd ripngd: variable shadowing fixes 2018-09-12 12:55:31 +02:00
mtracebis_netlink.h *: conform with COMMUNITY.md formatting rules, via 'make indent' 2018-03-06 14:04:32 -05:00
mtracebis_routeget.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
mtracebis_routeget.h pimd: Multicast traceroute client and router 2018-02-19 23:13:55 +01:00
mtracebis.c pimd: replace inet_ntoa 2020-10-22 10:13:56 -04:00
pim_assert.c pimd: zassert => assert 2021-04-23 12:25:47 +02:00
pim_assert.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_bfd.c pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_bfd.h pimd: rework BFD integration 2021-04-23 09:28:57 -03:00
pim_br.c *: ALLOC calls cannot fail 2018-08-11 17:14:58 +02:00
pim_br.h *: reindent 2017-07-17 14:04:07 +02:00
pim_bsm.c pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_bsm.h pimd: cleanup & convert bsm_rpinfo to TS list 2021-05-03 20:56:51 +02:00
pim_cmd.c Merge pull request #9682 from adrianomarto/mesh-group-fix 2021-09-28 10:21:17 -04:00
pim_cmd.h pimd : Add support for MLAG Register & Un-register 2019-11-13 19:46:52 -08:00
pim_errors.c pimd: PIM_[ERR|WARN] -> EC_PIM 2018-09-13 19:12:58 +00:00
pim_errors.h pimd: PIM_[ERR|WARN] -> EC_PIM 2018-09-13 19:12:58 +00:00
pim_hello.c pimd: zassert => assert 2021-04-23 12:25:47 +02:00
pim_hello.h *: reindent 2017-07-17 14:04:07 +02:00
pim_iface.c lib: allow to create interfaces in non-existing VRFs 2021-10-19 15:29:51 +03:00
pim_iface.h pimd: IGMP memberships are not querier specific 2021-08-27 10:42:53 +02:00
pim_ifchannel.c pimd: pim_ifchannel_local_membership_add should not inherit if (S,G) rpf unresolved 2021-07-19 03:57:25 -07:00
pim_ifchannel.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_igmp_join.h pimd: Add command to join any-source multicast. 2019-12-12 13:09:46 +01:00
pim_igmp_mtrace.c pimd: Remove pim->vrf_id and use pim->vrf->vrf_id 2021-05-12 14:36:59 -04:00
pim_igmp_mtrace.h pimd: adding querying of state to mtrace 2018-04-24 18:47:50 +02:00
pim_igmp_stats.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
pim_igmp_stats.h pimd: show ip igmp statistics command 2018-05-04 17:05:19 +02:00
pim_igmp.c pimd: Do not explicitly set the thread pointer to NULL 2021-10-04 19:29:06 +03:00
pim_igmp.h pimd: fuse source_new() and add_source_by_addr() 2021-08-27 10:46:53 +02:00
pim_igmpv2.c pimd: zassert => assert 2021-04-23 12:25:47 +02:00
pim_igmpv2.h pimd: IGMP conformance 5.10 test case is failing 2020-12-24 06:39:12 +00:00
pim_igmpv3.c pimd: fuse source_new() and add_source_by_addr() 2021-08-27 10:46:53 +02:00
pim_igmpv3.h pimd: IGMP memberships are not querier specific 2021-08-27 10:42:53 +02:00
pim_instance.c Merge pull request #9496 from idryzhov/vrf-cmd-init-unused-arg 2021-08-27 10:39:45 +02:00
pim_instance.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_int.c *: reindent 2017-07-17 14:04:07 +02:00
pim_int.h *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
pim_join.c pimd: zassert => assert 2021-04-23 12:25:47 +02:00
pim_join.h *: reindent 2017-07-17 14:04:07 +02:00
pim_jp_agg.c pimd: fix multiple memory leak 2021-01-14 22:38:18 -08:00
pim_jp_agg.h pimd: jp-agg list update debug logs 2019-11-15 14:16:08 -08:00
pim_macro.c pimd: Allow LHR in a AA situation to join upstream 2020-03-06 16:13:28 -05:00
pim_macro.h *: reindent 2017-07-17 14:04:07 +02:00
pim_main.c *: Drop break after using frr_help_exit() in switch/case 2021-08-25 10:49:05 +03:00
pim_memory.c *: require semicolon after DEFINE_MTYPE & co 2021-03-17 06:18:17 +01:00
pim_memory.h *: require semicolon after DEFINE_MTYPE & co 2021-03-17 06:18:17 +01:00
pim_mlag.c *: Correct spelling stuff 2020-10-29 16:16:00 -04:00
pim_mlag.h pimd: Cleanup some small memory leaks on exit 2020-07-16 08:13:21 -04:00
pim_mroute.c pimd: Fixing coverity issues 2021-08-24 10:36:45 -07:00
pim_mroute.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_msdp_packet.c *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlen 2021-07-01 23:50:39 +03:00
pim_msdp_packet.h pimd: MSDP SA forwarding 2020-10-06 08:11:24 -04:00
pim_msdp_socket.c pimd: Do not explicitly set the thread pointer to NULL 2021-10-04 19:29:06 +03:00
pim_msdp_socket.h pimd: Make msdp struct pim_instance * aware 2017-07-24 13:51:37 -04:00
pim_msdp.c pimd: Prevent uninited usage of nexthop 2021-09-21 07:54:54 -04:00
pim_msdp.h pimd: support MSDP global timers configuration 2021-07-01 09:59:51 -03:00
pim_msg.c *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
pim_msg.h pimd: handle endianness in pim header structure 2019-07-10 11:46:40 +08:00
pim_nb_config.c pimd: fixing command "no ip msdp mesh-group member" 2021-09-28 12:43:52 +10:00
pim_nb.c pimd: support MSDP global timers configuration 2021-07-01 09:59:51 -03:00
pim_nb.h pimd: support MSDP global timers configuration 2021-07-01 09:59:51 -03:00
pim_neighbor.c pimd: zlog_info changed to zlog_notice for neighbor up/down event 2021-07-06 22:51:19 -07:00
pim_neighbor.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_nht.c *: Add resolve via default flag 2021-09-27 12:38:08 -04:00
pim_nht.h Merge pull request #4239 from sarav511/rp 2019-05-28 10:26:28 -05:00
pim_oil.c pimd: Fix rare crash situation 2021-05-19 14:48:11 -04:00
pim_oil.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_pim.c pimd: Do not explicitly set the thread pointer to NULL 2021-10-04 19:29:06 +03:00
pim_pim.h pimd: Pim hello should be sent with 0 hold time on address change on old src ip 2020-03-19 03:06:46 -07:00
pim_register.c *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlen 2021-07-01 23:50:39 +03:00
pim_register.h pimd: When DR becomes non DR, couldreg state events not handled. 2020-03-19 18:27:37 -07:00
pim_routemap.c bgpd, lib, ospf6d, ospfd, pimd, zebra: Rework routemap event callback 2019-05-10 18:43:21 -04:00
pim_rp.c pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_rp.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_rpf.c Merge pull request #9489 from opensourcerouting/pim-restruct-20210825 2021-09-16 12:32:45 -04:00
pim_rpf.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_signals.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
pim_signals.h *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
pim_sock.c pimd: IGMP sockets need to be iface-bound too 2021-07-06 01:44:24 +02:00
pim_sock.h pimd: pim_socket_join_source is only called from one place 2018-08-02 10:09:09 -04:00
pim_ssm.c pimd: Remove pim->vrf_id and use pim->vrf->vrf_id 2021-05-12 14:36:59 -04:00
pim_ssm.h pimd: Cleanup pim_ssm.c to use 'struct pim_instance *' 2017-07-24 13:51:36 -04:00
pim_ssmpingd.c pimd: Remove pim->vrf_id and use pim->vrf->vrf_id 2021-05-12 14:36:59 -04:00
pim_ssmpingd.h pimd: Make pim_ssmpingd.c 'struct pim_instance' aware 2017-07-24 13:51:37 -04:00
pim_static.c *: Replace s_addr check agains 0 with INADDR_ANY 2020-12-14 21:03:38 +02:00
pim_static.h pimd: Put 'struct pim_instance *' as the first function parameter 2017-07-24 13:51:41 -04:00
pim_str.c lib: move SG prefix2str APIs from pimd to lib 2019-04-20 08:33:20 -07:00
pim_str.h lib: move SG prefix2str APIs from pimd to lib 2019-04-20 08:33:20 -07:00
pim_time.c pimd: zassert => assert 2021-04-23 12:25:47 +02:00
pim_time.h *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
pim_tlv.c *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlen 2021-07-01 23:50:39 +03:00
pim_tlv.h pimd: fix unaligned access parsing tlvs 2020-04-06 01:28:27 -04:00
pim_upstream.c pimd: fix register suppress timer code 2021-08-19 00:28:35 -04:00
pim_upstream.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_util.c *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlen 2021-07-01 23:50:39 +03:00
pim_util.h pimd: add support for boundaries 2017-09-26 13:00:52 -04:00
pim_vty.c *: explicitly print "exit" at the end of every node config 2021-08-23 22:08:20 +03:00
pim_vty.h lib, pimd: Remove PIM_NODE as it is not needed 2018-01-30 03:21:42 -05:00
pim_vxlan_instance.h pimd: handle ipmr-lo operational state changes 2020-02-14 09:18:30 -08:00
pim_vxlan.c pimd: Remove pim->vrf_id and use pim->vrf->vrf_id 2021-05-12 14:36:59 -04:00
pim_vxlan.h *: Replace s_addr check agains 0 with INADDR_ANY 2020-12-14 21:03:38 +02:00
pim_zebra.c pimd: fuse source_new() and add_source_by_addr() 2021-08-27 10:46:53 +02:00
pim_zebra.h *: Convert from ->interface_up to the interface callback 2019-09-19 13:34:06 -04:00
pim_zlookup.c pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
pim_zlookup.h pimd, zebra: Encode nexthop vrf in message 2018-11-01 19:24:59 -04:00
pim_zpthread.c pimd: Add accidently missed code during upstreaming process 2020-03-06 16:02:52 -05:00
pimd.c lib: remove old bfd library 2021-05-07 12:03:57 +03:00
pimd.h pimd: de-circularize includes 2021-08-27 10:41:23 +02:00
README pimd: fix frr url 2020-03-29 17:19:37 -04:00
subdir.am *: remove *.conf.sample files 2021-04-09 13:14:30 -04:00
test_igmpv3_join.c pimd: Remove #if 0 code from system 2021-01-28 13:37:53 -05:00
TODO pimd: Cleanup TODO file 2018-02-26 21:33:02 -05:00
TROUBLESHOOTING pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00

INTRODUCTION

        qpimd aims to implement a PIM (Protocol Independent Multicast)
	daemon for the FRR Routing Suite.

	qpimd implements PIM-SM (Sparse Mode) of RFC 4601.
        Additionally MSDP has been implemented.

	In order to deliver end-to-end multicast routing control
	plane, qpimd includes the router-side of IGMPv[2|3] (RFC 3376).

LICENSE

        qpimd - pimd for FRR
        Copyright (C) 2008 Everton da Silva Marques

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

        qpimd 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 qpimd; see the file COPYING.  If not, write
        to the Free Software Foundation, Inc., 59 Temple Place - Suite
        330, Boston, MA 02111-1307, USA.

HOME SITE

        qpimd lives at:

        https://github.com/frrouting/frr

PLATFORMS

	qpimd has been tested with Debian Jessie.

REQUIREMENTS

	qpimd requires FRR (2.0 or higher)


CONFIGURATION COMMANDS

	See available commands in the file pimd/COMMANDS.

KNOWN CAVEATS

	See list of known caveats in the file pimd/CAVEATS.

SUPPORT

	Please post comments, questions, patches, bug reports at the
	support site:

        https://frrouting.org/frr

RELATED WORK

	igmprt:	An IGMPv3-router implementation
	- http://www.loria.fr/~lahmadi/igmpv3-router.html

	USC pimd: PIMv2-SM daemon
	- http://netweb.usc.edu/pim/pimd (URL broken in 2008-12-23)
	- http://packages.debian.org/source/sid/pimd (from Debian)

	troglobit pimd: This is the original USC pimd from
	http://netweb.usc.edu/pim/. In January 16, 2010 it was revived
	with the intention to collect patches floating around in
	Debian, Gentoo, Lintrack and other distribution repositories
	and to provide a central point of collaboration.
	- http://github.com/troglobit/pimd

	zpimd: zpimd is not dependent of zebra or any other routing daemon
	- ftp://robur.slu.se/pub/Routing/Zebra
	- http://sunsite2.icm.edu.pl/pub/unix/routing/zpimd

	mrd6: an IPv6 Multicast Router for Linux systems
	- http://fivebits.net/proj/mrd6/

	MBGP: Implementation of RFC 2858 for Quagga
	- git://git.coplanar.net/~balajig/quagga
	- http://www.gossamer-threads.com/lists/quagga/dev/18000

REFERENCES

	IANA Protocol Independent Multicast (PIM) Parameters
	http://www.iana.org/assignments/pim-parameters/pim-parameters.txt

	Address Family Numbers
	http://www.iana.org/assignments/address-family-numbers

                              -- END --