summaryrefslogtreecommitdiffstats
path: root/sharpd (follow)
Commit message (Collapse)AuthorAgeFilesLines
* *: convert zclient callbacks to tableDavid Lamparter2021-10-201-18/+26
| | | | | | | | | | | | | This removes a giant `switch { }` block from lib/zclient.c and harmonizes all zclient callback function types to be the same (some had a subset of the args, some had a void return, now they all have ZAPI_CALLBACK_ARGS and int return.) Apart from getting rid of the giant switch, this is a minor security benefit since the function pointers are now in a `const` array, so they can't be overwritten by e.g. heap overflows for code execution anymore. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* *: Remove the ZEBRA_IMPORT_ROUTE_XXX zapi messagesDonald Sharp2021-09-271-11/+3
| | | | | | | | | These are no longer really needed. The client just needs to call nexthop resolution instead. So let's remove the zapi types. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Add resolve via default flagDonald Sharp2021-09-271-1/+1
|
* *: Drop `break` after using frr_help_exit() in switch/caseDonatas Abraitis2021-08-251-1/+0
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* *: Replace 4/16 integers to IPV4_MAX_BYTELEN/IPV6_MAX_BYTELENDonatas Abraitis2021-07-011-1/+1
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlenDonatas Abraitis2021-07-011-5/+5
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* *: Convert numeric 128 into IPV6_MAX_BITLEN for prefixlenDonatas Abraitis2021-07-011-4/+4
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* bgpd,sharpd,zebra: fix code styleHiroki Shirokura2021-06-022-8/+6
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* *: delete ZEBRA_FLAG_SEG6*_ROUTE and add ZAPI_NEXTHOP_FLAG_SEG6*Hiroki Shirokura2021-06-021-3/+0
| | | | | | | | | | | https://github.com/FRRouting/frr/pull/5865#discussion_r597670225 As this comment says. ZEBRA_FLAG_XXX should not have been used. To communicate SRv6 Route Information. A simple Nexthop Flag would have been sufficient for SRv6 information. And I fixed the whole thing that way. Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* lib,sharpd,zebra: update nexthop object with nh_srv6Hiroki Shirokura2021-06-021-2/+2
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: split srv6 route install commandHiroki Shirokura2021-06-021-59/+180
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: follow the practice on cli design for json outputHiroki Shirokura2021-06-021-15/+32
| | | | | | | | | | | | The "show sharp segment-routing srv6" command was a json output command, but it did not follow the common practice of the other commands. It follows the review and outputs the json format by using the json keyword. Otherwise, it produces human readable output. Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* *: eliminate redundant info from srv6 locator zapiHiroki Shirokura2021-06-021-34/+15
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* *: use one line init instead of memset and format itHiroki Shirokura2021-06-021-2/+1
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* *: fix code format accourding to checkpatchHiroki Shirokura2021-06-023-10/+19
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: install route supports nexthop-seg6 (step3)Hiroki Shirokura2021-06-021-1/+14
| | | | | | | | | | | We can install seg6 routes from shapd cli. This is for the behaviour test(topotest) to ensure SRv6 ZAPI is working fine. NEW-CLI: sharp install routes 1::1 nexthop-seg6 2001::1 encap a:: Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: support create/delete srv6-locator (step2)Hiroki Shirokura2021-06-025-0/+189
| | | | Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* shaprd: install route supports nexthop-seg6local (step1)Hiroki Shirokura2021-06-021-1/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | In this patch, we can install seg6local routes from shapd cli. New sub command "sharp install route $PREFIX nexthop-seg6local" is added to install seg6local routes via ZEBRA_ROUTE_ADD. This is for the behaviour test(topotest) to ensure SRv6 ZAPI is working fine. NEW-CLI: sharp install routes 1::1 nexthop-seg6local dum0 End 1 sharp install routes 2::1 nexthop-seg6local dum0 End_X 2001::1 1 sharp install routes 3::1 nexthop-seg6local dum0 End_T 10 1 sharp install routes 4::1 nexthop-seg6local dum0 End_DX4 10.0.0.1 1 SRv6 routes are installed as NEXTHOP_IFINDEX routes because of seg6local specification. seg6local routes depends the output device status instead of routing-nexthop. FYI: In seg6local implementation, kernel don't care RTA_OIF on the nexthop deeply but some requirement are exist as follow. (a) DEV isn't loopback interface (b) DEV's ipv6 status is enabled (c) DEV's enslaving status is the same with target-route Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: install_routes_helper support ZAPI_ROUTE flags (step1)Hiroki Shirokura2021-06-024-9/+19
| | | | | | | | | | | | current route addition mechanism on shaprd support only ipv4/v6 nexthop routes simply. so It doesn't need to ensure flags of zapi_routes. Then when we want to configure more complicated routing feature (like a srv6), we will want to control flags of zapi_route. In this patch, it will supports to configure flags of zapi_route when sharpd calls ZEBRA_ROUTE_ADD. Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
* sharpd: add v4 redistribute watchingDonald Sharp2021-05-043-0/+36
| | | | | | Add the ability for sharpd to watch v4 redistribution events Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* sharpd: use correct list of redist protocols in remove lspMark Stapp2021-04-291-2/+2
| | | | | | | The remove lsp command was using the wrong list of route protocols - use the ZEBRA list, same as the other clis. Signed-off-by: Mark Stapp <mjs@voltanet.io>
* *: remove *.conf.sample filesQuentin Young2021-04-092-7/+0
| | | | | | | | | | Most of these are many, many years out of date. All of them vary randomly in quality. They show up by default in packages where they aren't really useful now that we use integrated config. Remove them. The useful ones have been moved to the docs. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
* sharpd: Add Traffic Engineering Database (TED)Olivier Dugeon2021-03-235-0/+174
| | | | | | | | | | | Add new feature and commands to sharpd in order to collect Traffic Engineering Database information from an IGP (OSPF or IS-IS) though the ZAPI Opaque Message and the support of the Link State Library. This feature serves as an example of how to code a Traffic Engineering Database consumer and tests the mechanism. Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
* Merge pull request #8121 from opensourcerouting/macro-cleanupDonatas Abraitis2021-03-223-5/+6
|\ | | | | *: require ISO C11 + semicolons after file-scope macros
| * *: require semicolon after FRR_DAEMON_INFO & co.David Lamparter2021-03-171-1/+2
| | | | | | | | | | | | ... again ... Signed-off-by: David Lamparter <equinox@diac24.net>
| * *: require semicolon after DEFINE_MTYPE & coDavid Lamparter2021-03-173-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Back when I put this together in 2015, ISO C11 was still reasonably new and we couldn't require it just yet. Without ISO C11, there is no "good" way (only bad hacks) to require a semicolon after a macro that ends with a function definition. And if you added one anyway, you'd get "spurious semicolon" warnings on some compilers... With C11, `_Static_assert()` at the end of a macro will make it so that the semicolon is properly required, consumed, and not warned about. Consistently requiring semicolons after "file-level" macros matches Linux kernel coding style and helps some editors against mis-syntax'ing these macros. Signed-off-by: David Lamparter <equinox@diac24.net>
* | sharpd: Dump metric received for the reachabilityDonald Sharp2021-03-161-1/+2
|/ | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* sharpd: Convert over to using builtin printf functionalityDonald Sharp2021-03-141-11/+6
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* sharpd: don't send invalid nexthop-groups to zebraMark Stapp2021-01-211-1/+31
| | | | | | | | Ensure that there are valid (resolved) nexthops, and no invalid backup nexthops, in nhgs sent to zebra for installation. Signed-off-by: Mark Stapp <mjs@voltanet.io>
* *: Replace s_addr check agains 0 with INADDR_ANYDonatas Abraitis2020-12-141-3/+3
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* sharpd, zebra: Pass and display opaque data as PoCDonald Sharp2020-12-084-13/+31
| | | | | | | Pass data from sharpd to zebra as opaque data and display it as part of the detailed route data. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* lib, sharpd, vtysh: When reading a file in for config send start/end indicatorsDonald Sharp2020-11-191-0/+12
| | | | | | | When reading a file in for configuration, send start and end indicators to interested parties. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* *: Convert all usage of zclient_send_message to new enumDonald Sharp2020-11-151-4/+6
| | | | | | | | | The `enum zclient_send_status` enum needs to be extended throughout the code base to use the new states and to fix up places where we tested against the return value being non zero. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* bgpd, lib, sharpd: Add enum for zclient_send_message returnDonald Sharp2020-11-151-8/+4
| | | | | | | | Add a `enum zclient_send_status` for appropriate handling of return codes from zclient_send_message. Touch all the places where we handle this. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* sharpd: Add buffering supportDonald Sharp2020-11-151-22/+106
| | | | | | | | | Have sharpd notice that when sending routes to zebra that the underlying system has buffered data and to pause sending more data to zebra until such time we get a callback that the write was successful to zebra. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* sharpd: Re-arrange route_add|deleteDonald Sharp2020-11-152-72/+85
| | | | | | | | | These functions are never called outside of sharp_zebra.c, re-arrange a little to make the inclusions in sharp_zebra.h not needed and to also have these functions return whether or not the underlying buffering system was invoked in stream sending. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* bgpd: Advertise FIB installed routes to bgp peers (Part 1)Soman K S2020-11-061-1/+2
| | | | | | | | | | | | | | | | | | Issue: The bgp routes learnt from peers which are not installed in kernel are advertised to peers. This can cause routers to send traffic to these destinations only to get dropped. The fix is to provide a configurable option "bgp suppress-fib-pending". When the option is enabled, bgp will advertise routes only if it these are successfully installed in kernel. Fix (Part1) : * Added message ZEBRA_ROUTE_NOTIFY_REQUEST used by client to request FIB install status for routes * Added AFI/SAFI to ZAPI messages * Modified the functions zapi_route_notify_decode(), zsend_route_notify_owner() and route_notify_internal() to include AFI, SAFI as parameters Signed-off-by: kssoman <somanks@gmail.com>
* :* Convert prefix2str to %pFXDonatas Abraitis2020-10-222-15/+6
| | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* sharpd: Fix nexthop group name collisionDonald Sharp2020-10-171-2/+3
| | | | | | | | | | | | | | | | | | | If you have two nexthop groups named one oneone then the sharp daemon will treat them as the same nexthop group. This is because we are doign this: static int sharp_nhg_compare_func(const struct sharp_nhg *a, const struct sharp_nhg *b) { return strncmp(a->name, b->name, strlen(a->name)); } The strlen should be the size of the array of name. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* Merge pull request #7222 from idryzhov/fix-debugRenato Westphal2020-10-101-1/+1
|\ | | | | fix debug commands node inconsistencies
| * *: move "show debugging ..." commands to enable nodeIgor Ryzhov2020-10-021-1/+1
| | | | | | | | | | | | Use the same node for "show debugging" commands in all daemons. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* | vtysh: dynamically generate the list of daemons for commandsIgor Ryzhov2020-10-021-0/+1
|/ | | | | | | Some daemons were actually missing from the static definitions: nhrpd, babeld, eigrpd and bfdd. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* *: make failure to decode nht update an errorQuentin Young2020-10-011-2/+1
| | | | | | | This should never happen; no need to debug guard it and it's not a warning, if this isn't working then NHT is not working at all. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
* sharpd: make id log more specificStephen Worley2020-09-281-1/+1
| | | | | | Make ID log more specific as to the ID being assigned here. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* lib,zebra,sharpd: add code for backup proto-NHs but disabledStephen Worley2020-09-283-4/+30
| | | | | | | | | | | | Add the zapi code for encoding/decoding of backup nexthops for when we are ready for it, but disable it for now so that we revert to the old way with them. When zebra gets a proto-NHG with a backup in it, we early fail and tell the upper level proto. In this case sharpd. Sharpd then reverts to the old way of installation with the route. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* lib,sharpd: align zapi NHG apis a bitStephen Worley2020-09-281-10/+11
| | | | | | | Align the zapi NHG apis to be more consistent with the zapi_route apis. Add a struct zapi_nhg to use for encodings as well. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* sharp: add check for num_nh > multipathStephen Worley2020-09-281-0/+7
| | | | | | | Add a check for installing nexthop_group greater than multipath number. Truncate if we hit it and log a warning to the user. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* zebra,sharpd: checkpatch fixesStephen Worley2020-09-281-9/+5
| | | | | | Check patches fixes for NHG API pathes. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* lib,zebra,sharpd: clang formatStephen Worley2020-09-283-9/+7
| | | | | | Clang format for NHG API and sharpd patches. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
* sharpd: implement NHG notification handlingStephen Worley2020-09-283-1/+77
| | | | | | | | | Implement handling of NHG notifications in sharpd so that the routes don't attempt to use an NHG ID that did not successfully get created. If it does not get installed, we fall back to traditional zapi messaging. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>