]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
8 years agozebra: remove kernel_delete_ipv6_old()
David Lamparter [Sat, 28 Jun 2014 19:28:50 +0000 (21:28 +0200)]
zebra: remove kernel_delete_ipv6_old()

The only user of this was rib_bogus_ipv6(), which was removed in the
previous commit.  Good riddance.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Acked-by: Greg Troxel <gdt@ir.bbn.com>
Acked-by: Feng Lu <lu.feng@6wind.com>
Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit 51bdebad99fe813d1b7104543b352f0e39b1c8dc)

8 years agoAuthor: Timo Teräs <timo.teras@iki.fi>
Daniel Walton [Thu, 26 May 2016 01:49:34 +0000 (01:49 +0000)]
Author: Timo Teräs <timo.teras@iki.fi>
Date:   Tue Sep 30 11:31:53 2014 +0300

    bgpd: implement route-map set as-path prepend last-as

    It picks up the AS to add from the aspath, or uses the peers
    AS number. Useful mostly in iBGP setups.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Reviewed-by: Paul Jakma <paul@opensourcerouting.org>
8 years agobuild: remove bogus/deprecated inet_* tests
David Lamparter [Sat, 28 Jun 2014 18:22:55 +0000 (20:22 +0200)]
build: remove bogus/deprecated inet_* tests

These actually break configure on FreeBSD very subtly, because inet_aton
and __inet_aton are both detected, and then later other tests get
warnings about HAVE_INET_ATON being defined twice.

That said, they're incorrect to begin with since they detect alternative
functions but there is nothing in place to actually use these
alternates.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Acked-by: Greg Troxel <gdt@ir.bbn.com>
Acked-by: Feng Lu <lu.feng@6wind.com>
Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit 79f74962d20fa2c90df5a57335fc3b5e19bfeccf)

8 years agoisisd: match adjacency with source of hellos
Amritha Nambiar [Wed, 28 Jan 2015 18:09:30 +0000 (18:09 +0000)]
isisd: match adjacency with source of hellos

isis_pdu.c: match adjacency with source of hellos,
check for source ID on receiving hello

If an adjacency exists, check the adjacency is with the
same router as the source of the hellos. In case a mismatch
is detected, bring down the adjacency and let the next
hellos trigger creating the new adjacency.

Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 3c28aaf437d8d473adb89c5e74574a61a9ea7cc6)

8 years agoisisd: fix crash on changing the circuit type of a passive interface
Lu Feng [Thu, 8 Jan 2015 01:21:02 +0000 (01:21 +0000)]
isisd: fix crash on changing the circuit type of a passive interface

Signed-off-by: Feng Lu <lu.feng@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 92cff4f7cd7e805e6689e73e63029aaccd145eca)

8 years agoospfd: set O-bit in the option of all DD packets
Lu Feng [Thu, 8 Jan 2015 01:39:18 +0000 (01:39 +0000)]
ospfd: set O-bit in the option of all DD packets

If opaque-capability is enabled, we must set the O-bit in
the option field of all DD packets. Changing the option
field of DD packets may cause the peer to reset the state
back to ExStart.

Signed-off-by: Feng Lu <lu.feng@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 86ce951e349fd08d1ba2c66f5f6d07756689422a)

8 years agotests: fix tests for 1a211cb (missing well-known)
David Lamparter [Wed, 4 Feb 2015 06:26:03 +0000 (07:26 +0100)]
tests: fix tests for 1a211cb (missing well-known)

Fix tests/aspathtest.c again, this time by including a NEXT_HOP
attribute (which is out of correct order with AS_PATH, but that doesn't
matter here.)  This satisfies bgp_attr_check(), which after 1a211cb
refuses updates without nexthop attribute.

Fixes: 1a211cb ("one more fix for tightening of check for missing well-known attributes")
Cc: Paul Jakma <paul@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 143637198e333f0c822766b38f9d8cfe75c04e21)

8 years agoospfd: Fix initial Opaque LSA DB synchronisation
Olivier Dugeon [Mon, 3 Nov 2014 13:59:06 +0000 (14:59 +0100)]
ospfd: Fix initial Opaque LSA DB  synchronisation

ospfd has issues resynchronising its Opaque LSA DB with neighbours after restart
or interface events. The problem comes from opaque_lsa.c code that blocks
subsequent opaque LSA flooding until the neighbour router acknowledge that, and
removes the old opaque LSA from its LSDB. The bug comes from the fact that the
lock is never release, thus avoiding subsequent opaque LSA flooding.

More detail about the bugs and its solution is describeid in file
doc/te-link-params.md

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
(cherry picked from commit 149210656045c363d8f59b97ad9251b0c06a15df)

8 years agolib: don't create circular lists (fixes 6d83113)
David Lamparter [Fri, 12 Dec 2014 20:35:28 +0000 (21:35 +0100)]
lib: don't create circular lists (fixes 6d83113)

LISTNODE_DETACH doesn't clear out the node, and LISTNODE_ATTACH doesn't
set ->next (since it assumes a fresh/zeroed listnode).  As a result, the
new listnode_move_to_tail() created a nice circular list, in turn
crashing ospfd in ospf_write() later.

Reported-by: Martin Winter <mwinter@netdef.org>
Fixes: 6d83113 ("ospfd: Tweak previous iface RR write patch to avoid free/malloc & redundant log")
Cc: Paul Jakma <paul@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Acked-by: Greg Troxel <gdt@ir.bbn.com>
Acked-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
Acked-by: Vincent JARDIN <vincent.jardin@6wind.com>
(cherry picked from commit 1c6db0d2da34044ddfb42665fda8a3387ecc451d)

8 years agobgpd: set BGP_ATTR_MP_[UN]REACH_NLRI (fixes 1a211cb)
David Lamparter [Mon, 8 Dec 2014 16:42:12 +0000 (17:42 +0100)]
bgpd: set BGP_ATTR_MP_[UN]REACH_NLRI (fixes 1a211cb)

Unfortunately, the attribute present bits for MP_REACH and MP_UNREACH
which 1a211cb ("bgpd: one more fix"...) tests for are never set in their
corresponding attribute parsing functions.

Reported-by: Martin Winter <mwinter@netdef.org>
Fixes: 1a211cb "bgpd: one more fix for tightening of check for missing well-known attributes"
Cc: Paul Jakma <paul@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit daefeb8755e194dd19a5f1910bc78d13c8147efb)

8 years agozebra/kernel_socket.c: Use platform alignment
Greg Troxel [Tue, 2 Dec 2014 19:51:49 +0000 (14:51 -0500)]
zebra/kernel_socket.c: Use platform alignment

Use the platform-provided RT_ROUNDUP macro to align sockaddrs on the
routing socket, rather than using hard-coded assumptions about
alignment.  Emit a warning if the OS doesn't define alignment macros.

Resolves failure of ripngd on NetBSD 6 i386, which changed alignment
to uint64_t from long.

(cherry picked from commit 273b1bd341afff86ba571e0be296d88dba627136)

8 years agodoc: Document 'set as-path prepend' and 'set as-path prepend last-as'
Paul Jakma [Mon, 20 Oct 2014 16:49:44 +0000 (17:49 +0100)]
doc: Document 'set as-path prepend' and 'set as-path prepend last-as'

(cherry picked from commit 5e4ba81dc212b172e715afa7b6ea668cddd8485d)

8 years agobgpd: trivial, remove unneeded extra variable in bgp_capability_restart
Paul Jakma [Tue, 14 Oct 2014 10:14:06 +0000 (11:14 +0100)]
bgpd: trivial, remove unneeded extra variable in bgp_capability_restart

(cherry picked from commit ec98d90767b341877fb7f1547f025b946955899a)

8 years agomake some structures constant.
Stephen Hemminger [Mon, 3 Nov 2014 01:20:09 +0000 (01:20 +0000)]
make some structures constant.

These pre-initialized arrays are not modified.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit 88d37b902bc8127379d3293b9671aa6a11479c23)

8 years agotests: fix tests for 055086f (well-known attr check)
David Lamparter [Thu, 30 Oct 2014 05:42:00 +0000 (06:42 +0100)]
tests: fix tests for 055086f (well-known attr check)

Fix tests/aspathtest.c by including an ORIGIN attribute in the
testcases.  After 055086f "bgpd: well-known attr check only run for
v4/uni, which could cause a crash," we're now checking for it and tests
are failing due to that.

Note that test #11 ("4b AS4_PATH w/o AS_PATH") is no longer accepted as
OK since the function now checks for the existence of an AS_PATH attr.

Fixes: 055086f ("bgpd: well-known attr check only run for v4/uni"...)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit c68f6d9dbb9f910d3ee82e099655fff7c12ef856)

8 years agobuild: fix 9562a77... (mrlg removal)
David Lamparter [Thu, 30 Oct 2014 05:19:15 +0000 (06:19 +0100)]
build: fix 9562a77... (mrlg removal)

mrlg.cgi was removed in 9562a77 "mrlg: Remove obsolete version." but the
file was still listed in Makefile.am.

Fixes: 9562a77 ("mrlg: Remove obsolete version.")
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 59135bde25441cd39cea0389467eb206fc9030c9)

8 years agomrlg: Remove obsolete version.
Paul Jakma [Tue, 21 Oct 2014 09:59:45 +0000 (10:59 +0100)]
mrlg: Remove obsolete version.

* mrlg.cgi: The version we shipped was very much  out of date, remove it.
* mrlg.txt: Add file pointing to the official MRLG site.

(cherry picked from commit 9562a7774b76df050d3e01632c6203796dc72c87)

8 years agoHandy guidelines to contribute
Vincent JARDIN [Mon, 27 Oct 2014 13:03:14 +0000 (13:03 +0000)]
Handy guidelines to contribute

Explain how to be a nice contributor in a handy way.

Signed-off-by: Vincent JARDIN <vincent.jardin@6wind.com>
Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit f80ba04074f1211d857d08d6deddc41d029be1c7)

8 years agoospfd: Don't leave stale RouterLSA's when changing areaID
Joakim Tjernlund [Tue, 9 Mar 2010 06:42:30 +0000 (06:42 +0000)]
ospfd: Don't leave stale RouterLSA's when changing areaID

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit 6b274d90fa9b0c9f43e3ca9494cd78df1ccad14e)

8 years agostream: remove unused stream_read_unblock
Stephen Hemminger [Wed, 13 Jan 2010 00:32:43 +0000 (00:32 +0000)]
stream: remove unused stream_read_unblock

The one place this was being used in BGP is now gone,
can remove deprecated interface.
Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit 3790eb0d3f0bbb24b9c6be97f547cec144ee05d1)

8 years agoBug in ospf6_lsa_compare()
Yasuhiro Ohara [Thu, 17 Dec 2009 05:41:17 +0000 (05:41 +0000)]
Bug in ospf6_lsa_compare()

This fix is probably correct on 32bit systems,
but i think it will not work on 64bit systems.
sizeof(signed long) would be 8 and therefore the
cast from u_int32_t will map all the values to
non-negative part of long int.

You would like to use int (like in ospfd) and
change the type of seqnuma, seqnumb to that.

The type int32_t would be even more proper, but
sizeof(int) is 4 on relevant platforms.

Signed-off: Ondrej Zajicek <santiago@crfreenet.org>
Acked-by: Feng Lu <lu.feng@6wind.com>
Acked-by: Yasuhiro Ohara <yasu@jaist.ac.jp>
(cherry picked from commit bdd8cd70a042473477f9144c9cedb8dde11ba2c1)

8 years agoospfd: invalid MD5 auth_key?
Joakim Tjernlund [Thu, 26 Nov 2009 12:23:07 +0000 (12:23 +0000)]
ospfd: invalid MD5 auth_key?

This looks fishy in ospf_make_md5_digest()
if (list_isempty (OSPF_IF_PARAM (oi, auth_crypt)))
    auth_key = (const u_int8_t *) "";
...
MD5Update(&ctx, auth_key, OSPF_AUTH_MD5_SIZE);
auth_key points to a "" string of len 1 which is a lot
smaller that OSPF_AUTH_MD5_SIZE. Is this intentional to
get some random data or just a plain bug?

Anyone using MD5 should have a closer look and decide
what to do.
Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit ea2a598411cc7bd20456849e56bbc9e93c9916e7)

8 years agodocs: defines.texi include seems to want to be after setfilename
Paul Jakma [Thu, 9 Oct 2014 15:09:10 +0000 (16:09 +0100)]
docs: defines.texi include seems to want to be after setfilename

* quagga.texi: I'm getting warnings about stuff in defines.texi not being
  defined when building quagga.info. Seems to be fixed by moving the include
  of defines.texi to the end of the header. Also, the Texinfo docs suggest
  setfilename must go first.

(cherry picked from commit 384d7ad98c109e92eaf65bf10a3256e5657639c3)

8 years agozebra: Build the test client, can be useful, and add IPv6 to testrib.conf
Paul Jakma [Thu, 9 Oct 2014 09:51:41 +0000 (10:51 +0100)]
zebra: Build the test client, can be useful, and add IPv6 to testrib.conf

(cherry picked from commit 7a6eec54eaffa82f4f03363314bb81c400eb2a66)

8 years agoFreeBSD has changed its SOCK_RAW for being truly raw.
Olivier Cochard-Labbé [Thu, 9 Oct 2014 09:28:21 +0000 (10:28 +0100)]
FreeBSD has changed its SOCK_RAW for being truly raw.

(cherry picked from commit f6444e4f6e1664f49f7552f894c8c94e45dd3c35)

8 years ago[lib] Add support for backtrace on more platforms
Joakim Tjernlund [Thu, 25 Jun 2009 15:40:06 +0000 (16:40 +0100)]
[lib] Add support for backtrace on more platforms

* lib/sigevent.c: (program_counter) extend to support more platforms. Joint
  effort with Paul Jakma.

(cherry picked from commit b166ea2dda9f04a8b75e0bf5adb7064580695f22)

8 years agolib/plist: Add some required parentheses, according to clang-analyzer
Paul Jakma [Fri, 19 Sep 2014 15:55:46 +0000 (16:55 +0100)]
lib/plist: Add some required parentheses, according to clang-analyzer

(cherry picked from commit 18f420e9f99e7f6557cf5877673cd6e71ac32192)

8 years agoripng_nexthop: remove unused store to variable
Paul Jakma [Fri, 19 Sep 2014 14:35:54 +0000 (15:35 +0100)]
ripng_nexthop: remove unused store to variable

(cherry picked from commit 16f1606382b77ac6b951ea0de15384fcbc1df73f)

8 years agoospf6_lsdb: trivial, make it clear that showfunc is set before deref.
Paul Jakma [Fri, 19 Sep 2014 14:35:15 +0000 (15:35 +0100)]
ospf6_lsdb: trivial, make it clear that showfunc is set before deref.

(cherry picked from commit 7bef33cbf5027189bd55e4890a07a6bef8277f93)

8 years agoAdd missing GPL headers, and copyright claims that certainly apply.
Paul Jakma [Tue, 16 Sep 2014 10:53:49 +0000 (11:53 +0100)]
Add missing GPL headers, and copyright claims that certainly apply.

* Fix (a subset of)? files with non-trivial code that are missing GPL headers.

* A few copyright claims added which I am certain apply, but which I had
  missed out on the original commits.

NB: Copyright claims are not exclusive and the addition of any copyright
claim should not be read as implying a lack of any further claims, or
denying the validity of any other claims.  All those with claims of
copyright over any portion of Quagga are welcome to submit them, ideally as
patches to update copyright strings in files.

(cherry picked from commit 010ebbbca6396f272cc2d50d147dd922dda68213)

8 years agoHACKING: remove an unneeded escape
Paul Jakma [Fri, 19 Oct 2012 11:02:42 +0000 (12:02 +0100)]
HACKING: remove an unneeded escape

(cherry picked from commit d4a8607d12e1d3f655055647f1633ec154685545)

8 years agoripd: use only one constant for derivation
Lu Feng [Wed, 25 Jun 2014 07:43:15 +0000 (07:43 +0000)]
ripd: use only one constant for derivation

RIP_MAX_RTE is defined in ripd.h as 25 but is in fact the
result of a formula. More over it is not used in the code:
the code itself includes the fomula. This makes it un-clear
for maintenance.

Signed-off-by: Feng Lu <lu.feng@6wind.com>
Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 342a31bfda21616209366679ac522471e5772a2f)

8 years agobgpd: route-map: share aspath object compilation code where possible
Timo Teräs [Tue, 20 May 2014 06:04:49 +0000 (09:04 +0300)]
bgpd: route-map: share aspath object compilation code where possible

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
(cherry picked from commit b304dcb8abc4e5b93f86a4024990980746e730be)

8 years agobgpd: fix route-map comments
Timo Teräs [Tue, 20 May 2014 05:57:26 +0000 (08:57 +0300)]
bgpd: fix route-map comments

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
(cherry picked from commit 2aa640bd78b64821bde9a53ecdd1e96e91b20ae4)

8 years agopimd: Fix some static analysis
Donald Sharp [Thu, 26 May 2016 00:36:10 +0000 (20:36 -0400)]
pimd: Fix some static analysis

Using && instead of &.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoquagga: Fix bug in handling of --enable-shell-access
Donald Sharp [Wed, 25 May 2016 23:53:09 +0000 (19:53 -0400)]
quagga: Fix bug in handling of --enable-shell-access

The macro to expand and handle --enable-shell-access was
broken.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agobuild: Remove the old PIC/PIE patch, let libtool sort it out
Paul Jakma [Thu, 20 Aug 2015 20:30:17 +0000 (21:30 +0100)]
build: Remove the old PIC/PIE patch, let libtool sort it out

* Remove the old change from '08 to add in PIE arguments at automake level.
  Versions of libtool since then know how to deal with -fpie and do the right
  thing according to whether its building shared or executable objects.
  So just pass '-fpie' as CFLAG and let libtool do its thing.

8 years agopimd: Clean up some more compile warnings
Donald Sharp [Wed, 25 May 2016 23:43:00 +0000 (19:43 -0400)]
pimd: Clean up some more compile warnings

Turns out we were missing $(WERROR) for compiling pimd
so we were not catching compile warning issues.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix SPT bit initial setting
Donald Sharp [Thu, 12 Nov 2015 15:54:04 +0000 (07:54 -0800)]
pimd: Fix SPT bit initial setting

The initial setting of the SPT bit was incorrect.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix pim_upstream_find to match on INADDR_ANY for source
Donald Sharp [Wed, 4 Nov 2015 00:39:40 +0000 (16:39 -0800)]
pimd: Fix pim_upstream_find to match on INADDR_ANY for source

Fix the pim_upstream_find code to match on INADDR_ANY for source.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoPimd: pim register send is being sent and received at the RP
Donald Sharp [Thu, 29 Oct 2015 18:27:39 +0000 (11:27 -0700)]
Pimd: pim register send is being sent and received at the RP

Modify the code to send a register packet upstream to the RP.
Packet is currently being received but not properly decoded
currently.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Modify NOCACHE code to create (S,G) route
Donald Sharp [Thu, 29 Oct 2015 13:41:24 +0000 (06:41 -0700)]
pimd: Modify NOCACHE code to create (S,G) route

The code was hard-coding the (S,G) route to get the
multicast packet up into pimd.  This code fixes
this issue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Create special pimreg interface
Donald Sharp [Thu, 29 Oct 2015 13:35:12 +0000 (06:35 -0700)]
pimd: Create special pimreg interface

The linux kernel wants a pimreg vif device.  The pimd
code wants a 'struct interface *' for anything it works
with.  Since the pimreg vif device is not a real linux
device that zebra knows about.  Cheat by creating
a pimreg interface pointer and setup the code to
properly be able to handle the registration of the vif
device.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix some file inclusion issues.
Donald Sharp [Wed, 28 Oct 2015 19:22:22 +0000 (12:22 -0700)]
pimd: Fix some file inclusion issues.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Move add_oif into pim_oil.c
Donald Sharp [Wed, 28 Oct 2015 18:00:37 +0000 (11:00 -0700)]
pimd: Move add_oif into pim_oil.c

This commit does two things:
(A) Sets up #defines for the pimreg to be used in pim_mroute.c
(B) Moves add_oif into pim_oil.c where it belongs

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add New Source type for where a (S,G) mroute is learned
Donald Sharp [Wed, 28 Oct 2015 17:14:06 +0000 (10:14 -0700)]
pimd: Add New Source type for where a (S,G) mroute is learned

Add Source type for (S,G) mroute.  This will allow us to know that
a (S,G) route came from an actual Source( ie the kernel called us
back with information about a multicast packet it received with
no mroute for it ).

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Convert the RP(G) code to return a struct pim_rpf
Donald Sharp [Wed, 28 Oct 2015 14:00:31 +0000 (07:00 -0700)]
pimd: Convert the RP(G) code to return a struct pim_rpf

This will facilitate sending packets to the right spot

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agolib: Fix compile warnings with zlog_hexdump
Donald Sharp [Wed, 25 May 2016 23:14:36 +0000 (19:14 -0400)]
lib: Fix compile warnings with zlog_hexdump

When using zlog_hexdump tell the compiler that we don't expect
to actually change the memory.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Modify the RP data structure.
Donald Sharp [Tue, 27 Oct 2015 20:13:23 +0000 (13:13 -0700)]
pimd: Modify the RP data structure.

Modify the RP data structure to know how to get to it from here.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Move I_am_DR macro to more appropriate place
Donald Sharp [Fri, 23 Oct 2015 14:37:45 +0000 (07:37 -0700)]
pimd: Move I_am_DR macro to more appropriate place

Move the I_am_DR(ifp) outside of pim_macro.c and into
pim_iface.h where it belongs.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add some code to intelligently handle WHOLEPKT generation
Donald Sharp [Fri, 23 Oct 2015 14:10:30 +0000 (07:10 -0700)]
pimd: Add some code to intelligently handle WHOLEPKT generation

When we get a NOCACHE call from the kernel, there is
no point generating a mcast route for the packet if
there is no RP configured, or if PIM-SSM is configured
on the interface.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add some debug code to unknown packet upcalls
Donald Sharp [Fri, 23 Oct 2015 12:58:39 +0000 (05:58 -0700)]
pimd: Add some debug code to unknown packet upcalls

When receiving data from the kernel from the kernel socket,
some calls that are received are not known what they are.
Provide some more debug code to handle appropriately

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fixup some broken code for the register receive
Donald Sharp [Tue, 20 Oct 2015 15:42:16 +0000 (08:42 -0700)]
pimd: Fixup some broken code for the register receive

Some of the register receive code was broken.  This fixes that

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cleanup some comments and documentation
Donald Sharp [Tue, 20 Oct 2015 15:41:09 +0000 (08:41 -0700)]
pimd: Cleanup some comments and documentation

Starting the transition of PIM-SSM to PIM-SM means
that we have to cleanup some internal code comments
so that the code will match the comments.

Signed-off-by: Donald Sharp<sharpd@cumulusnetworks.com
8 years agopimd: Start handling of pim REGISTER packet type
Donald Sharp [Tue, 20 Oct 2015 15:36:37 +0000 (08:36 -0700)]
pimd: Start handling of pim REGISTER packet type

This code starts the handling of the pim register type.  No guarantees that
it works correctly, just that it compiles and the start of the code is in there.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cause NOCACHE event to create WHOLEPKT events for pimd
Donald Sharp [Tue, 20 Oct 2015 15:26:24 +0000 (08:26 -0700)]
pimd: Cause NOCACHE event to create WHOLEPKT events for pimd

pimd needs the ability to send the multicast packet to the RP.
This code causes the incoming unknown multicast packet to
be send to pimd so it can be sent as a REGISTER packet towards
the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix nexthop resolution breakage
Donald Sharp [Tue, 20 Oct 2015 15:25:13 +0000 (08:25 -0700)]
pimd: Fix nexthop resolution breakage

Nexthop resolution was broken due to some ill placed debug statements.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fixup kernel callbacks to handle them better
Donald Sharp [Tue, 20 Oct 2015 13:00:02 +0000 (06:00 -0700)]
pimd: Fixup kernel callbacks to handle them better

This patch sets up the handling of the 3 basic kernel callbacks:
IGMPMSG_WRONGVIF - When a multicast message comes in the wrong vif
IGMPMSG_NOCACHE - There is no multicast route associated with a received(S,G)
IGMPMSG_WHOLEPKT - There is no outgoing interface for a packet.

The code's debugs are cleaned up to be covered by debug statements

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Register with kernel to get unknown multicast packets
Donald Sharp [Tue, 20 Oct 2015 01:23:16 +0000 (18:23 -0700)]
pimd: Register with kernel to get unknown multicast packets

Start the process of creating the pimreg vif device so that
we can get the callbacks from the kernel with the multicast packets

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agozebra: don't print uninitialized string (3b02fe8)
David Lamparter [Sat, 7 Mar 2015 07:40:48 +0000 (08:40 +0100)]
zebra: don't print uninitialized string (3b02fe8)

This crept in as part of the MRIB improvements and I missed the compiler
warning between other noise.  Unfortunately, printing an uninitialised
variable can in fact make zebra crash, so this is not trivial.

Fixes: 3b02fe8 ("zebra: add "show ip rpf" to get result of RPF lookup")
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agopimd: SwitchToSptDesired addition
Donald Sharp [Fri, 16 Oct 2015 16:11:51 +0000 (09:11 -0700)]
pimd: SwitchToSptDesired addition

Add code to tell us if we want to switch to a SPT for the (S,G)

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com
8 years agopimd: Add code to start the KAT(S,G) as needed
Donald Sharp [Fri, 16 Oct 2015 14:50:16 +0000 (07:50 -0700)]
pimd: Add code to start the KAT(S,G) as needed

The KAT(S,G) timer can now be started and on
expiry the timer clears the PMBR(S,G).

More work needs to be done for when this timer pops, but
good enough of a start now.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Create some infrastructure code for RST(S,G) and KAT(S,G)
Donald Sharp [Fri, 16 Oct 2015 14:01:47 +0000 (07:01 -0700)]
pimd: Create some infrastructure code for RST(S,G) and KAT(S,G)

These two timers have some default values.  Create the
default defines to be used and start setting up the data
structures for them.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Start work for handling of register command
Donald Sharp [Thu, 15 Oct 2015 16:02:50 +0000 (09:02 -0700)]
pimd: Start work for handling of register command

Start the coding of the REGISTER receive and send.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Check to see if we are the RP
Donald Sharp [Thu, 15 Oct 2015 15:58:37 +0000 (08:58 -0700)]
pimd: Check to see if we are the RP

Add code to allow on interface up/down events the check of whether
or not this process is the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add SPTbit(S,G) support
Donald Sharp [Thu, 15 Oct 2015 13:58:41 +0000 (06:58 -0700)]
pimd: Add SPTbit(S,G) support

Add code to allow pimd to store the SPTbit as needed and
to properly test against it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Start adding the ability to handle the Bridge Router
Donald Sharp [Thu, 15 Oct 2015 13:19:31 +0000 (06:19 -0700)]
pimd: Start adding the ability to handle the Bridge Router

Add code to allow the check and set the PMBR(S,G) if the register.borderbit
is set.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add code to get RP(G)
Donald Sharp [Fri, 2 Oct 2015 17:34:11 +0000 (10:34 -0700)]
pimd: Add code to get RP(G)

Add code to figure out who the RP is for group G.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add RP check code
Donald Sharp [Fri, 2 Oct 2015 16:30:02 +0000 (09:30 -0700)]
pimd: Add RP check code

Add the ability for the node to determine if it is the RP or not.
Currently this only allows static RP's.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Receive and transmit (*,G) to the RP
Donald Sharp [Wed, 30 Sep 2015 12:41:18 +0000 (05:41 -0700)]
pimd: Receive and transmit (*,G) to the RP

Receive a (*,G) route and send it upstream to the RP.
The RP at this time does not properly handle the route.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix test_igmp_join code to handle thread_master * changes
Donald Sharp [Tue, 29 Sep 2015 16:42:08 +0000 (09:42 -0700)]
pimd: Fix test_igmp_join code to handle thread_master * changes

Fixup of pimd to be cognizant of thread_master pointer changes

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoImplement "ip pim rp X.Y.Z.A" and "ip pim sm" commands
Donald Sharp [Tue, 8 Sep 2015 15:10:19 +0000 (08:10 -0700)]
Implement "ip pim rp X.Y.Z.A" and "ip pim sm" commands

Allow the user to specify the static Rendevous point
as well as specifying that an interface is Sparse Mode.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoFixup of Code to allow pimd to actually run on startup
Donald Sharp [Wed, 3 Jun 2015 15:20:45 +0000 (08:20 -0700)]
Fixup of Code to allow pimd to actually run on startup

Fixup of various control files to allow quagga to startup
properly with pimd actually part of the set

8 years agopimd: Limit pim hello log messages
Donald Sharp [Wed, 21 Oct 2015 20:13:51 +0000 (16:13 -0400)]
pimd: Limit pim hello log messages

pimd was outputting allot of data surrounding pim hello packets.
In addition the debugging was inconsistent and not all turned
on via 'debug pim packet hello'.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix size_t zlog_err format string warning
Paul Jakma [Thu, 29 Oct 2015 14:24:13 +0000 (14:24 +0000)]
pimd: Fix size_t zlog_err format string warning

fc1c114aa / "pimd: Fix warning", the size_t arg should have a %zu format.

8 years agopimd: Cleanup interface startup
Donald Sharp [Fri, 2 Oct 2015 16:27:27 +0000 (12:27 -0400)]
pimd: Cleanup interface startup

This patch cleans up some interface startup, removes duplicate
debug messages and protects against some always being displayed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Notice when we receive a packet type we can't handle yet
Donald Sharp [Thu, 1 Oct 2015 16:40:52 +0000 (12:40 -0400)]
pimd: Notice when we receive a packet type we can't handle yet

There are PIM packet types that have not been implemented yet.
Notice when we get one of those and safely do nothing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add knowledge of different packet types
Donald Sharp [Thu, 1 Oct 2015 16:40:51 +0000 (12:40 -0400)]
pimd: Add knowledge of different packet types

There are several additional packet types that pimd is unaware of
Add code to allow pim to understand them in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Cleanup zebra debugs to be protected by debug commands
Donald Sharp [Wed, 30 Sep 2015 14:22:46 +0000 (10:22 -0400)]
pimd: Cleanup zebra debugs to be protected by debug commands

pimd is very chatty without any pim debugs turned on.
This commit fixes a bunch of the debugs to be protected
by appropriate pim debug statement.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Do not display some default values as part of a show run
Donald Sharp [Wed, 30 Sep 2015 13:10:12 +0000 (09:10 -0400)]
pimd: Do not display some default values as part of a show run

There is no need to display igmp default values for the query-interval
and the query-max-response-time-dsec

Before change:

!
interface swp4
 description swp4 -> host-212's swp1
 ip igmp
 ip igmp query-interval 125
 ip igmp query-max-response-time-dsec 100
 ip pim ssm
 link-detect
!

After change:
!
interface br1
 ip igmp
 ip pim ssm
 link-detect
!

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix warning
Martin Winter [Thu, 24 Sep 2015 04:13:58 +0000 (21:13 -0700)]
pimd: Fix warning

Fix long unsigned / unsigned mixup

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
8 years agopimd: use IPPROTO_IP (not SOL_IP) for IP_PKTINFO
David Lamparter [Tue, 15 Sep 2015 09:18:23 +0000 (02:18 -0700)]
pimd: use IPPROTO_IP (not SOL_IP) for IP_PKTINFO

Solaris uses the same socket API for IP_PKTINFO as Linux, but doesn't
have a SOL_IP define.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agopimd: Fix compile warning (error with Werror) on BSD
Paul Jakma [Thu, 24 Sep 2015 09:26:55 +0000 (10:26 +0100)]
pimd: Fix compile warning (error with Werror) on BSD

* ioctl commands can vary in type between systems, cast to an unsigned long
  before passing to format command.

8 years agopimd: Remove stdout zlog changes
Donald Sharp [Tue, 8 Sep 2015 19:19:55 +0000 (15:19 -0400)]
pimd: Remove stdout zlog changes

Quagga start has unnecessary pim messages to stdout.  Causing some confusion.
Logging is already saving this information in pimd.log

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix leaked fd
Donald Sharp [Tue, 8 Sep 2015 19:02:07 +0000 (15:02 -0400)]
pimd: Fix leaked fd

When caling pim_sock_open if the failure cause happens, however
unlikely, don't leak the fd on failure.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agobuild: Enable vtysh and pimd as part of default build
Donald Sharp [Fri, 17 Jul 2015 01:18:34 +0000 (21:18 -0400)]
build: Enable vtysh and pimd as part of default build

The default build needs vtysh and pimd as a default build so
that when a change is made we can catch build issues before they
become a problem.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agobgpd/pimd: fix zAPI parsing
Nicolas Dichtel [Wed, 16 Sep 2015 07:42:36 +0000 (09:42 +0200)]
bgpd/pimd: fix zAPI parsing

Commit c99f3481a598 has changed the API. Now, the vrfid has been added in
the header, thus we must read it before parsing the rest of the message.

To ease code maintenance, let's add a new function to read a zAPI header.

Fixes: c99f3481a598 ("*: add VRF ID in the API message header")
Reported-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Tested-by: Martin Winter <mwinter@opensourcerouting.org>
8 years agopimd: Create ability to modify hell and hold timers per interface
Donald Sharp [Fri, 21 Aug 2015 23:35:27 +0000 (19:35 -0400)]
pimd: Create ability to modify hell and hold timers per interface

Create new per interface command:
'ip pim hello <1-180> {<1-180>}'

The first number is the Hello Timer for this interface
The second number is the Hold Timer to pass to neighbors on this interface.
The second number is optional.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Change ioctl call failure from vty_out to zlog_warn
Donald Sharp [Thu, 2 Jul 2015 13:53:59 +0000 (09:53 -0400)]
pimd: Change ioctl call failure from vty_out to zlog_warn

The command 'show ip multicast' when run, iterates over all interfaces
on the router, if you do not have pim configured on that interface
it would generate an error message:

Interface Address         ifi Vif  PktsIn PktsOut    BytesIn   BytesOut
br1       20.0.15.1         7   7       0       0          0          0
swp1      169.254.0.10      3   3       0       0          0          0
swp2      169.254.0.26      4   4       0       0          0          0
ioctl(SIOCGETVIFCNT=35296) failure for interface swp3 vif_index=-1: errno=22: Invalid argument
ioctl(SIOCGETVIFCNT=35296) failure for interface swp4 vif_index=-1: errno=22: Invalid argument

This fixes the issue to display this instead:

Interface Address         ifi Vif  PktsIn PktsOut    BytesIn   BytesOut
br1       20.0.15.1         7   7       0       0          0          0
swp1      169.254.0.10      3   3       0       0          0          0
swp2      169.254.0.26      4   4       0       0          0          0
swp3      0.0.0.0           5  -1       0       0          0          0
swp4      0.0.0.0           6  -1       0       0          0          0

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Ensure new generation_id is different from previous
Donald Sharp [Thu, 2 Jul 2015 17:22:49 +0000 (13:22 -0400)]
pimd: Ensure new generation_id is different from previous

The RFC states that an interfaces generation_id must be changed
if it experiences an if down.  From 4.3.1:

The GenID option contains a randomly generated
32-bit value that is regenerated each time PIM forwarding is started
or restarted on the interface, including when the router itself
restarts.

Since we are only grabbing a new generation_id without comparing
it to the previous generation_id, it is possible that random
can generate the exact same number.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Stop DR election on every hello
Donald Sharp [Tue, 16 Jun 2015 20:19:56 +0000 (13:19 -0700)]
pimd: Stop DR election on every hello

The DR election is occurring on every hello received.
This is because the hello receive packet returns a 0
for any successfully received packet.  PIMD then looked
at the 0 returned and did a DR election.

Code was inspected for the cases where DR should happen:
(A) Interface ip address change
(B) DR priority in hello packet changes
(C) Received a new neighbor on an interface
(D) Neighbor timer pops.

Each of these initiate a DR election in the code currently.

Testing was initiated on a pim network:
tor-11# show ip pim designated-router
NonPri: Number of neighbors missing DR Priority hello option

Interface Address         DR              Uptime   Elections Changes NonPri
br1       20.0.15.1       20.0.15.1       00:08:16         1       1      0
swp1      169.254.0.10    169.254.0.10    00:08:16         2       1      0
swp2      169.254.0.26    169.254.0.26    00:08:16         2       1      0
tor-11#

As you can see Elections == 2.  This is because pimd performs
an election on (A) and (C) above.  I see no need to modify
(A) to check if we have any knowledge of the interface before
this call.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Fix first DR Election
Donald Sharp [Fri, 19 Jun 2015 00:01:34 +0000 (17:01 -0700)]
pimd: Fix first DR Election

The function pim_neighbor_new caused the dr election before
the addition of the neighbor to the pim_ifp->pim_neighbor_list,
in pim_neighbor_add, which is needed to properly elect the
correct DR.

Move the dr_election and hello trigger till after the addition
to the list.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: Add ability to set DR Priority for an interface
Donald Sharp [Fri, 19 Jun 2015 01:14:20 +0000 (18:14 -0700)]
pimd: Add ability to set DR Priority for an interface

From RFC 4601, Section 4.3.1:

The DR_Priority Option allows a network administrator to give
preference to a particular router in the DR election process by
giving it a numerically larger DR Priority.  The DR_Priority Option
SHOULD be included in every Hello message, even if no DR Priority is
explicitly configured on that interface.  This is necessary because
priority-based DR election is only enabled when all neighbors on an
interface advertise that they are capable of using the DR_Priority
Option.  The default priority is 1.

This modification allows the setting of the DR Priority on a per
interface basis.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopimd: add support for configuring multicast static routes
Jafar Al-Gharaibeh [Thu, 11 Jun 2015 23:29:02 +0000 (18:29 -0500)]
pimd: add support for configuring multicast static routes

Hi,

This patch adds the ability to configure multicast static routes
directly into pimd. Two source files are introduced to implement the new
feature in addition to changes to existing files.

Here is how it can be used the CLI:

interface <incoming interface>
ip mroute <outgoing interface> <group addr>                          #
for asm
or ip mroute <outgoing interface> <group addr> <source>    # for ssm

Please let me know if you have any questions or concerns,

Regards,
Jafar

Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoRemoval of 'show ip mroute'
Donald Sharp [Sat, 30 May 2015 22:57:54 +0000 (18:57 -0400)]
Removal of 'show ip mroute'

The 'show ip mroute' in zebra_vty.c collided with the
'show ip mroute' command in pim_cmd.c.  The 'show ip rpf'
command is functionally equivalent to the zebra_vty.c
'show ip mroute'.  Therefore remove the 'show ip mroute' command
in zebra_vty.c.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopim: 'show debugging' collision
Donald Sharp [Thu, 28 May 2015 00:40:46 +0000 (17:40 -0700)]
pim: 'show debugging' collision

The 'show debugging' cli as setup by pim collided with 'show debugging isis'.
Fix that and clean up cli help commands to actually display correctly.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoFixup of redhat control files to properly start pimd
Donald Sharp [Thu, 28 May 2015 00:57:31 +0000 (17:57 -0700)]
Fixup of redhat control files to properly start pimd

8 years agopimd assert when no route to source from a new igmp join
Donald Sharp [Sat, 13 Jun 2015 00:47:26 +0000 (17:47 -0700)]
pimd assert when no route to source from a new igmp join

When pim_upstream_new is called the code looks up the nexthop.
If there is no route to the source, the code silently ignored
the error returned.  When the nexthop lookup fails don't create
the 'struct pim_stream *' to return.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agopim_mroute.h has a different version of code than linux/mroute.h provides
Donald Sharp [Fri, 5 Jun 2015 19:15:44 +0000 (12:15 -0700)]
pim_mroute.h has a different version of code than linux/mroute.h provides

linux/mroutes.h and pim_mroute.h both have copies of the same structures.
This is causing failures in setsockopt(..., MRT_ADD_MFC,...) because
of data structure incompatibilities between the kernel and what
pim_mroute.h was providing.  Modify the code to check for mroute.h
and include it if necessary.  I did not modify the non linux/mroute.h
path because I do not have other systems to test on easily.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoPIMD: Fix code to use srandom/random
Donald Sharp [Fri, 19 Jun 2015 23:26:18 +0000 (19:26 -0400)]
PIMD: Fix code to use srandom/random

pimd rolled it's own solution to random #'s, that was not
terribly random.  Rely on the underlying system to generate
random #'s for us

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