summaryrefslogtreecommitdiffstats
path: root/zebra
Commit message (Collapse)AuthorAgeFilesLines
* zebra: don't print uninitialized string (3b02fe8)David Lamparter2015-03-041-1/+1
| | | | | | | | | 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>
* zebra: print "no link-detect"David Lamparter2015-03-021-0/+2
| | | | | | | The default for this is slated to change, so let's print the current default value for preexisting configurations. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* build: get rid of INCLUDES, use AM_CPPFLAGSDavid Lamparter2015-02-141-1/+1
| | | | | | | | | | | | INCLUDES in configure.ac was not used at all, and INCLUDES in Makefile.am is supposed to be AM_CPPFLAGS these days. Reduces warnings spewed during bootstrap/autoreconf. 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>
* zebra: remove rt_ioctl kernel interfaceDavid Lamparter2015-02-142-521/+1
| | | | | | | | | None of the BSDs uses ioctls to set routes anymore. 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>
* build: remove ancient Linux/BSD IPv6 cruftDavid Lamparter2015-02-141-3/+2
| | | | | | | | | IPv6 functions in a separate library... yeah, right. 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>
* zebra: remove kernel_delete_ipv6_old()David Lamparter2015-02-145-39/+0
| | | | | | | | | | 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>
* zebra, ripngd: remove ::/64 special-casingDavid Lamparter2015-02-141-25/+0
| | | | | | | | | | | | | | | | | In the 90ies, IPv4 was believed to exist within IPv6, with some kernels implementing this belief in code... Our code here is keyed to "#ifdef LINUX", yet no Linux from the past 10 years had this, making the code completely useless. FreeBSD 10.0 does in fact have a "::/96 via ::1 dev lo0 reject" route. IMHO we shouldn't mess with that, the admin can filter as neccessary anyway. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Greg Troxel <gdt@ir.bbn.com> Acked-by: Feng Lu <lu.feng@6wind.com> [DL: slightly adjusted commit message to remove misunderstanding] Acked-by: Paul Jakma <paul@jakma.org>
* build: remove INRIA, NRL and MUSICA IPv6 quirksDavid Lamparter2015-02-144-13/+4
| | | | | | | | | Valar dohaeris. 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>
* build: remove AIX, NEC EWS and IRIXDavid Lamparter2015-02-146-230/+4
| | | | | | | | | Valar morghulis. 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>
* build: remove Linux non-netlink configDavid Lamparter2015-02-143-427/+3
| | | | | | | | | | This path is deprecated, completely untested, likely broken and will not be maintained. Kill it with fire. 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>
* zebra: mark multicast commands experimentalDavid Lamparter2015-02-061-0/+7
| | | | | | | | | | depending on feedback from actually having these commands in a released version, we may want to adjust them. Thus, mark them as experimental so users are aware of this. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: add "show ip rpf" to get result of RPF lookupDavid Lamparter2015-02-061-5/+47
| | | | | | | | | | | Checking what route exactly a RPF lookup for a given source uses is essential for an administrator to debug multicast routing issues. This command provides exactly that, using the multicst RPF lookup function and printing out its result to the CLI. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: make MRIB lookup behaviour switchableDavid Lamparter2015-02-064-21/+169
| | | | | | | | | | | | | | | depending on the usage scenario (and availability of multitopology IGP protocols, which is currently zero in Quagga), different approaches of Multicast RPF lookups are useful. Reference behaviours from commercial vendors are urib-only/mrib-only (Juniper, depending on inet.2 availability) and lowest-distance (Cisco). As we are currently without MT IGP support, mrib-first seems the most useful default for Quagga. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: return route_node from rib_match_ipv4_safiDavid Lamparter2015-02-063-10/+18
| | | | | | | | | | The multicast code needs to know the route_node in addition to the rib entry in order to perform distance or prefix-length comparisons. Add it as optional "out" pointer parameter. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: dummy kernel "install" multicast routesDavid Lamparter2015-02-061-8/+29
| | | | | | | | | | | | | | | | | This is a followup to 9511633 ("zebra: MBGP routes should not be installed in the kernel"), which was correct in disabling MRIB routes being installed in the kernel, yet broke the MRIB since now routes were never marked as active. Hence, push down the check into the kernel install functions, so that the routes are still marked active. At the same time, the FPM calls get a check each since otherwise we'd bump the FPM interface on MRIB updates. Fixes: 9511633 ("zebra: MBGP routes should not be installed in the kernel") Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: fix optional distance on static mrib routeDavid Lamparter2015-02-061-8/+31
| | | | | | | | | | | | | | Unfortunately, the quagga CLI parser doesn't support [<1-255>]. Fix by working around with an alias. Replaces the following commits: - zebra: mrib: [no] ip mroute - require distance. - zebra: mrib: [no] ip mroute - make distance optional. (Rewritten as alias) Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: mrib: static route supportEverton Marques2015-02-063-36/+91
| | | | | | | | | | | | | | | | | With the MRIB being independent from the Unicast RIB, there's currently now way to add static routes to the MRIB. Address that by adding a separate set of commands for MRIB static routes. Combines these original patches: - zebra: mrib: ip mroute command to add unicast route to MRIB for multicast RPF. - zebra: mrib: no ip mroute: Fix removal of static multicast RPF route. - zebra: mrib: remove unused static_add/delete_ipv4 - zebra: Cleanups to zebra_rib. - pimd: Merge pim-only branch. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: kill rib_match_ipv4()David Lamparter2015-02-063-9/+2
| | | | | | | | | Since this function is internal to zebra, there is no reason to keep this one-line indirect wrapper to rib_match_ipv4_safi() around. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: mrib: Include BGP routes in RPF lookupsEverton Marques2015-02-063-7/+7
| | | | | | | | | | The rib_match_ipv4() function was previously used only for iBGP recursive nexthop lookups, which ignore eBGP routes. This is not desirable for PIM RPF lookups, which may well use an eBGP route. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: add ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIBEverton Marques2015-02-061-0/+96
| | | | | | | | | | | | | | | | | | | This adds a new zapi call "ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB" performing a Multicast RPF lookup for a given source. Details of the lookup behaviour are left to the zebra side of things. Note: this is non-reactive, as in, only delivers a snapshot of the state at a particular point in time. There's no push notification of changes happening to the RIB. This combines the following 3 original patches: - zebra: add zsend_ipv4_nexthop_lookup_mrib() - zserv: Query mrib (SAFI_MULTICAST). - zebra: Cleanups to zebra_rib. Cc: Everton Marques <everton.marques@gmail.com> Cc: Balaji G <balajig81@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: point rib_match_ipv4() to ._safi()Everton Marques2015-02-061-58/+1
| | | | | | | | | Since rib_match_ipv4() is just rib_match_ipv4_safi() for SAFI_UNICAST, the former can be removed and pointed to the latter instead. Cc: Balaji G <balajig81@gmail.com> Cc: Everton Marques <everton.marques@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: add rib_match_ipv4_safi()Everton Marques2015-02-062-0/+58
| | | | | | | | This is the same as rib_lookup_ipv4(), without the SAFI hardcoded. Cc: Balaji G <balajig81@gmail.com> Cc: Everton Marques <everton.marques@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: identify MRIB on debug messagesDavid Lamparter2015-02-061-1/+4
| | | | | | | | since the same code handles both URIB and MRIB, the debug messages can get rather confusing if the RIB isn't identified. Mark the MRIB in debug messages so we can distinguish that. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: factor out rib debug logsDavid Lamparter2015-02-061-63/+51
| | | | | | | | | | Introduces a logging function that takes a struct route_node * argument, and prefixes log output with that node's prefix. While this removes some duplication, it will also later be useful for srcdest route nodes. Behaviour before and after the patch should be exactly identical. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra/kernel_socket.c: Use platform alignmentGreg Troxel2014-12-021-10/+40
| | | | | | | | | 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.
* Added show command to display only the routes in the RIB that does not count ↵Dinesh G Dutt2014-11-111-0/+124
| | | | | | | | ECMPs Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com> Reviewed-by: Paul Jakma <paul@opensourcerouting.org>
* Make static IPv6 routes respect non-default routing tables.Dinesh G Dutt2014-11-111-0/+1
| | | | | | Signed-off-by: Nolan Leake <nolan@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com> Reviewed-by: Paul Jakma <paul@opensourcerouting.org>
* zebra: MBGP routes should not be installed in the kernelBalaji2014-10-301-2/+8
| | | | | | | | | | | MBGP routes are used only for PIM RPF checks and hence should not be installed in the kernel's FIB. Ignore route node set to Multicast SAFI. Signed-off-by: Balaji.G <balajig81@gmail.com> Acked-by: Everton Marques <everton.marques@gmail.com> [pushed down rn->table->info assignment below assert] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: route_unlock_node is missing in "show ip[v6] route <prefix>" commandsLu Feng2014-10-271-0/+4
| | | | | Signed-off-by: Feng Lu <lu.feng@6wind.com> Acked-by: Vincent Jardin <vincent.jardin@6wind.com>
* zebra: Build the test client, can be useful, and add IPv6 to testrib.confPaul Jakma2014-10-172-4/+24
|
* Fix most compiler warnings in default GCC build.Paul Jakma2014-09-234-23/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix lots of warnings. Some const and type-pun breaks strict-aliasing warnings left but much reduced. * bgp_advertise.h: (struct bgp_advertise_fifo) is functionally identical to (struct fifo), so just use that. Makes it clearer the beginning of (struct bgp_advertise) is compatible with with (struct fifo), which seems to be enough for gcc. Add a BGP_ADV_FIFO_HEAD macro to contain the right cast to try shut up type-punning breaks strict aliasing warnings. * bgp_packet.c: Use BGP_ADV_FIFO_HEAD. (bgp_route_refresh_receive) fix an interesting logic error in (!ok || (ret != BLAH)) where ret is only well-defined if ok. * bgp_vty.c: Peer commands should use bgp_vty_return to set their return. * jhash.{c,h}: Can take const on * args without adding issues & fix warnings. * libospf.h: LSA sequence numbers use the unsigned range of values, and constants need to be set to unsigned, or it causes warnings in ospf6d. * md5.h: signedness of caddr_t is implementation specific, change to an explicit (uint_8 *), fix sign/unsigned comparison warnings. * vty.c: (vty_log_fixed) const on level is well-intentioned, but not going to fly given iov_base. * workqueue.c: ALL_LIST_ELEMENTS_RO tests for null pointer, which is always true for address of static variable. Correct but pointless warning in this case, but use a 2nd pointer to shut it up. * ospf6_route.h: Add a comment about the use of (struct prefix) to stuff 2 different 32 bit IDs into in (struct ospf6_route), and the resulting type-pun strict-alias breakage warnings this causes. Need to use 2 different fields to fix that warning? general: * remove unused variables, other than a few cases where they serve a sufficiently useful documentary purpose (e.g. for code that needs fixing), or they're required dummies. In those cases, try mark them as unused. * Remove dead code that can't be reached. * Quite a few 'no ...' forms of vty commands take arguments, but do not check the argument matches the command being negated. E.g., should 'distance X <prefix>' succeed if previously 'distance Y <prefix>' was set? Or should it be required that the distance match the previously configured distance for the prefix? Ultimately, probably better to be strict about this. However, changing from slack to strict might expose problems in command aliases and tools. * Fix uninitialised use of variables. * Fix sign/unsigned comparison warnings by making signedness of types consistent. * Mark functions as static where their use is restricted to the same compilation unit. * Add required headers * Move constants defined in headers into code. * remove dead, unused functions that have no debug purpose.
* Add missing GPL headers, and copyright claims that certainly apply.Paul Jakma2014-09-194-0/+84
| | | | | | | | | | | | | * 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.
* zebra: fix rtnh_len in the rt_netlink messages for multipath caseLu Feng2014-09-151-1/+2
| | | | | | | | | | | | | | In _netlink_route_build_multipath(): - Each time when appending a IPv4 gateway in the message, rtnh_len is increased by sizeof (struct rtattr) + 4, where we should use "bytelen" instead of the hard coding "4". - As what done for IPv4, we should increase rtnh_len accordingly along with adding a IPv6 gateway, or else the IPv6 gateways will be lost. 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>
* zebra: fix struct msghdr initializersTimo Teräs2014-08-181-4/+20
| | | | | | | | | | | | | struct msghdr field orders are not strictly specified in POSIX. Improve portability by using designated initializer. This fixes build against musl c-library where struct msghdr is POSIX compliant (Linux kernel and glibc definitions are non-conforming). As the result is also more readable, struct iovec initilizers were also converted. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* *: nuke ^L (page feed)David Lamparter2014-06-0415-48/+48
| | | | | | | | | | | | | | Quagga sources have inherited a slew of Page Feed (^L, \xC) characters from ancient history. Among other things, these break patchwork's XML-RPC API because \xC is not a valid character in XML documents. Nuke them from high orbit. Patches can be adapted simply by: sed -e 's%^L%%' -i filename.patch (you can type page feeds in some environments with Ctrl-V Ctrl-L) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: raise the privileges before calling socket()Michal Sekletar2014-05-271-6/+6
| | | | | | | | | | | | | | Because of recent changes when creating AF_NETLINK socket, kernel will cache capabilities of the caller and if file descriptor is used or otherwise handed to another process it will check that current user has necessary capabilities to use the socket. Hence we need to ensure we have necessary capabilities when creating the socket and at the time we use the socket. See: http://www.spinics.net/lists/netdev/msg280198.html Signed-off-by: Michal Sekletar <msekleta@redhat.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: Change the mechanism for comparing route ID's.Ken Williams2014-04-221-3/+1
| | | | | | | | | | | | The current format uses subtraction of two ints. Unfortunately, the subtraction method does not work for all combinations of numbers. For example, the with numbers represented by 10.x.x.x and 192.x.x.x, 10.x.x.x - 192.x.x.x will yield a very large positive number indicating that 10.x.x.x is larger. Signed-off-by: Ken Williams <kenneth.j.williams@intel.com> Acked-by: Feng Lu <lu.feng@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* lib/command.c: rewrite command matching/parsingChristian Franke2014-04-012-6/+0
| | | | | | | | | | Add support for keyword commands. Includes new documentation for DEFUN() in lib/command.h, for preexisting features as well as new keyword specification. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* bgpd, ospfd, zebra: fix some DEFUN definitionsChristian Franke2014-04-013-8/+8
| | | | | | | Fixup some DEFUNS with incorrect command strings or mixed up helpstrings. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: apply syntactic sugar to rib_dump()David Lamparter2014-04-013-9/+13
| | | | | | | strip the explicit __func__ present on all calls and make the prefix argument a transparent union. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: set metric for directly connected routes via netlink to 0Brett Ciphery2014-04-011-3/+3
| | | | | | | | | | a value of 1 is hard coded for the metric field, much like the ifconfig utility it may have roots in. in order to be in line with the metric used in the linux kernel itself, we switch this to 0. Signed-off-by: Brett Ciphery <brett.ciphery@windriver.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* ospf6d: solve segfaults with ospf6d on FreeBSDIngo Flaschberger2014-03-211-0/+1
| | | | | | | | Do not send ospf6d hellos on fresh created interfaces without configuration (ie. no vlan configured). Ospf6d use ip6_mtu, if it's not initalised, Ospf6d tries to alloc indefinite size of memory. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* security: Fix some typos and potential NULL-derefRemi Gacogne2014-02-111-1/+1
| | | | | | | | | This patch against the git tree fixes minor typos, some of them possibily leading to NULL-pointer dereference in rare conditions. Signed-off-by: Remi Gacogne <rgacogne-github@coredump.fr> Signed-off-by: Joachim Nilsson <troglobit@gmail.com> Acked-by: Feng Lu <lu.feng@6wind.com>
* zebra: log routes w/o gateway in rib_delete_ipv4Christian Franke2014-02-111-6/+14
| | | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Feng Lu <lu.feng@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: match gateway when deleting NEXTHOP_IPV4_IFINDEX routesChristian Franke2014-02-101-0/+1
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Feng Lu <lu.feng@6wind.com>
* zebra: make rib_dump() compatible with IPv6 RIBVincent Bernat2013-10-222-9/+24
| | | | | | [DL: resolved conflicts in zebra_rib.c] [DL: fix usage with --disable-ipv6] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: apply route-maps for interface routesChristian Franke2013-09-191-0/+12
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: fix recursive-routes via ifindex routesChristian Franke2013-09-191-16/+49
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: implement NEXTHOP_FLAG_ONLINKChristian Franke2013-09-193-1/+18
| | | | | | | | | | | On Linux, the kernel will only allow for a route to be installed when its gateway is directly attached according the kernel fib. There are cases when this restriction by the kernel is too strong, in those cases, we deploy the RTNH_F_ONLINK netlink flag. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* zebra: handle blackholes encountered in recursive resolutionChristian Franke2013-09-191-0/+12
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>