Proto commits in FRRouting/frr

These 32 commits are when the Protocol Buffers files have changed:

Commit:5b21964
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmtd: add backend xpath map for RPC Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

The documentation is generated from this commit.

Commit:7052c94
Author:Carmine Scarpitta
Committer:Carmine Scarpitta

fpm: Add SRv6 Local SIDs to `fpm.proto` Add several protobuf messages to support the installation and removal of SRv6 Local SIDs via FPM protobuf. This is a preliminary commit to support sending SRv6 Local SIDs and VPN SIDs via protobuf. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>

Commit:4ec8ef5
Author:Carmine Scarpitta
Committer:Carmine Scarpitta

fpm: Add SRv6 VPN SIDs to `fpm.proto` Add two optional fields to the AddRoute protobuf message to support SRv6 VPN use cases: * `srv6_vpn_sid`: used to associate an SRv6 VPN SID to a route; if present, the router will steer the traffic that matches the prefix by encapsulating the payload in an outer IPv6 header where the destination address is the SRv6 VPN SID provided * `srv6_encap_source_address`: source Address of outer encapsulating IPv6 header This is a preliminary commit to support sending SRv6 Local SIDs and VPN SIDs via protobuf. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>

Commit:1e884ba
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: backend subscriptions to notifications Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:76e4eb8
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmtd, lib: implement CREATE_EXCL operation Currently, there's no difference between CREATE and MODIFY operations. To be compatible with NETCONF/RESTCONF, add new CREATE_EXCL operation that throws an error if the configuration data already exists. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

Commit:3c2598a
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmt, lib: differentiate DELETE and REMOVE operations Currently, there's a single operation type which doesn't return error if the object doesn't exists. To be compatible with NETCONF/RESTCONF, we should support differentiate between DELETE (fails when object doesn't exist) and REMOVE (doesn't fail if the object doesn't exist). Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

Commit:d726114
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmt, lib: implement REPLACE operation Replace operation removes the current data node configuration and sets the provided value. As current northbound code works only with one xpath at a time, the operation only makes sense to clear the config of a container without deleting it itself. However, the next step is to allow passing JSON-encoded complex values to northbound operations which will make replace operation much more useful. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

Commit:9cd8693
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: step 6: remove old unfinished get-data code Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:b3b5951
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmtd, lib: remove batch ids from all messages Batch IDs are only used to verify that all messages were received and processed by a backend. It's not necessary to do that as we use reliable stream transport - messages can't be dropped or received out of order. This commit also fixes possible race condition that can happen if one backend process messages slower than other backends. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

Commit:d2977d5
Author:Igor Ryzhov
Committer:Igor Ryzhov

mgmtd, lib: remove batch ids from cfg apply reply The config is always applied fully, all batches are included. There's no need to pass a list of applied batches as it always contains all of them. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>

Commit:25582f3
Author:Christian Hopps
Committer:Mergify

mgmtd: remove unused "placeholder" code. We don't need un-run/un-tested placeholder code we may never need. Signed-off-by: Christian Hopps <chopps@labn.net> (cherry picked from commit 70fb3910dbe81c8d44dcfa77c070b0a6e83d3607)

Commit:caae820
Author:Christian Hopps
Committer:Mergify

mgmtd: consolidate getcfg and getdata msgs into "get" eliminates tons of copy and paste code. Signed-off-by: Christian Hopps <chopps@labn.net> (cherry picked from commit dbb1bc6f355ae53ce1f2402a1ac196e9f9e18a42)

Commit:70fb391
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: remove unused "placeholder" code. We don't need un-run/un-tested placeholder code we may never need. Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:dbb1bc6
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: consolidate getcfg and getdata msgs into "get" eliminates tons of copy and paste code. Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:c10f8e6
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: KISS the locking code Move away from things like "lock if not locked" type code, require the user has locked prior to geting to that point. For now we warn if we are taking a lock we already had; however, this should really be a failure point. New requirements: SETCFG - not implicit commit - requires user has locked candidate DS and they must unlock after implicit commit - requires user has locked candidate and running DS both locks will be unlocked on reply to the SETCFG COMMITCFG - requires user has locked candidate and running DS and they must unlock after rollback - this code now get both locks and then does an unlock and early return thing on the adapter side. It needs to be un-special cased in follow up work that would also include tests for this functionality. Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:df0173c
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: KISS the locking code Move away from things like "lock if not locked" type code, require the user has locked prior to geting to that point. For now we warn if we are taking a lock we already had; however, this should really be a failure point. New requirements: SETCFG - not implicit commit - requires user has locked candidate DS and they must unlock after implicit commit - requires user has locked candidate and running DS both locks will be unlocked on reply to the SETCFG COMMITCFG - requires user has locked candidate and running DS and they must unlock after rollback - this code now get both locks and then does an unlock and early return thing on the adapter side. It needs to be un-special cased in follow up work that would also include tests for this functionality. Signed-off-by: Christian Hopps <chopps@labn.net>

Commit:ef43a63
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: Add MGMT Frontend Interface Framework This commit introduces the Frontend Interface which can be used by front-end management clients like Netconf server, Restconf Server and CLI to interact with new FRR Management daemon (MGMTd) to access and sometimes modify FRR management data. This commit includes the following functionalities in the changeset: 1. Add new Frontend server for clients connect to. 2. Add a C-based Frontend client library which can be used by Frontend clients to communicate with MGMTd via the Frontend interface. 3. Maintain a frontend adapter for each connection from an appropriate Frontend client to facilitate client requests and track one or more client sessions across it. 4. Define the protobuf message format for messages to be exchanged between MGMTd Frontend module and the Frontend client. 5. This changeset also introduces an instance of MGMT Frontend client embedded within the lib/vty module that can be leveraged by any FRR daemon to connect to MGMTd's Frontend interface. The same has been integrated with and initialized within the MGMTd daemon's process context to implement a bunch of 'set-config', 'commit-apply', 'get-config' and 'get-data' commands via VTYSH Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com> Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com> Co-authored-by: Ujwal P <ujwalp@vmware.com> Signed-off-by: Yash Ranjan <ranjany@vmware.com>

Commit:7d65b7b
Author:Christian Hopps
Committer:Christian Hopps

mgmtd: Add MGMT Backend Interface Framework This commit introduces the MGMT Backend Interface which can be used by back-end management client daemons like BGPd, Staticd, Zebra to connect with new FRR Management daemon (MGMTd) and utilize the new FRR Management Framework to let any Frontend clients to retrieve any operational data or manipulate any configuration data owned by the individual Backend daemon component. This commit includes the following functionalities in the changeset: 1. Add new Backend server for Backend daemons connect to. 2. Add a C-based Backend client library which can be used by daemons to communicate with MGMTd via the Backend interface. 3. Maintain a backend adapter for each connection from an appropriate Backend client to facilitate client requests and track one or more transactions initiated from Frontend client sessions that involves the backend client component. 4. Add the following commands to inspect various Backend client related information a. show mgmt backend-adapter all b. show mgmt backend-yang-xpath-registry c. show mgmt yang-xpath-subscription Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com> Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com> Co-authored-by: Ujwal P <ujwalp@vmware.com> Signed-off-by: Yash Ranjan <ranjany@vmware.com>

Commit:47a3a82
Author:David Lamparter
Committer:David Lamparter

*: manual SPDX License ID conversions The files converted in this commit either had some random misspelling or formatting weirdness that made them escape automated replacement, or have a particularly "weird" licensing setup (e.g. dual-licensed.) This also marks a bunch of "public domain" files as SPDX License "NONE". Signed-off-by: David Lamparter <equinox@opensourcerouting.org>

Commit:17bfa8e
Author:Yash Ranjan
Committer:Christian Hopps

mgmtd: Add MGMT Frontend Interface Framework This commit introduces the Frontend Interface which can be used by front-end management clients like Netconf server, Restconf Server and CLI to interact with new FRR Management daemon (MGMTd) to access and sometimes modify FRR management data. This commit includes the following functionalities in the changeset: 1. Add new Frontend server for clients connect to. 2. Add a C-based Frontend client library which can be used by Frontend clients to communicate with MGMTd via the Frontend interface. 3. Maintain a frontend adapter for each connection from an appropriate Frontend client to facilitate client requests and track one or more client sessions across it. 4. Define the protobuf message format for messages to be exchanged between MGMTd Frontend module and the Frontend client. 5. This changeset also introduces an instance of MGMT Frontend client embedded within the lib/vty module that can be leveraged by any FRR daemon to connect to MGMTd's Frontend interface. The same has been integrated with and initialized within the MGMTd daemon's process context to implement a bunch of 'set-config', 'commit-apply', 'get-config' and 'get-data' commands via VTYSH Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com> Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com> Co-authored-by: Ujwal P <ujwalp@vmware.com> Signed-off-by: Yash Ranjan <ranjany@vmware.com>

Commit:0fe5b90
Author:Renato Westphal
Committer:Renato Westphal

lib: don't ignore error messages generated during the commit apply phase While a configuration transaction can't be rejected once it reaches the APPLY phase, we should allow NB callbacks to generate error or warning messages when a configuration change is being applied. That should be useful, for example, to return warnings back to the user informing that the applied configuration has some kind of inconsistency or is missing something in order to be effectively activated. The infrastructure for this was already present, but the northbound layer was ignoring all errors/warnings generated during the apply/abort phases instead of returning them to the user. This commit changes that. In the gRPC plugin, extend the Commit() RPC adding a new "error_message" field to the response type. This is necessary to allow errors/warnings to be returned even when the commit operation succeeds (since grpc::Status::OK doesn't support error messages like the other status codes). Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:4049b01
Author:Renato Westphal
Committer:Renato Westphal

grpc: relicense the northbound service description file The GPL license is too restrictive and can "contaminate" client scripts using language bindings auto-generated from this file. We don't want this to happen. Adopt the BSD-2-Clause license to avoid any problem of this nature. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:e05ab0b
Author:Satheesh Kumar K
Committer:Satheesh Kumar K

lib,mlag : Defining MLAG Proto file Defining the message structures between Zebra & MLAG Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>

Commit:6a59722
Author:Quentin Young

Revert "Merge pull request #4885 from satheeshkarra/pim_mlag" This reverts commit d563896dada99f3474d428f928786cbfde936fee, reversing changes made to 09ea1a40386f02a13cdb0462cc55af0d03f0c277.

Commit:40e79e9
Author:Satheesh Kumar K
Committer:Satheesh Kumar K

Zebra: Fixing Review comments in Zebra_MLAG Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>

Commit:9918b45
Author:Satheesh Kumar K
Committer:Satheesh Kumar K

lib,mlag : Defining MLAG Proto file Defining the message structures between Zebra & MLAG Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>

Commit:ec2ac5f
Author:Renato Westphal
Committer:Renato Westphal

lib: add new gRPC-based northbound plugin This is an experimental plugin for now. Full documentation will come later. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:a805d3b
Author:David Lamparter
Committer:David Lamparter

protobuf: fix build Signed-off-by: David Lamparter <equinox@opensourcerouting.org>

Commit:fc5300b
Author:Martin Winter
Committer:Martin Winter

Protobuf: Update library name to reflect name change to FRR Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>

Commit:dad253b
Author:Avneesh Sachdev
Committer:Donald Sharp

qpb: Add support for protobuf. Infrastructure that allows protocol buffers to be used in Quagga. The changes below comprise of: - Build hooks - Protobuf definitions for common types. - Library routines for working with protobuf, including functions that help translate between common quagga types and their protobuf equivalents. Changes: * qpb/{Makefile.am,README.txt,qpb.h,.gitignore} Add the qpb library, which provides shared code and definitions for using protocol buffers in quagga code. * qpb/qpb.proto Protobuf definitions that can be shared by all of quagga. * qpb/linear_allocator.h An allocator that allocates memory by walking down towards the end of a buffer. This is used to cheaply allocate/deallocate memory on the stack for protobuf operations. * qpb/qpb_allocator.[ch] Thin layer that allows a linear allocator to be used with the protobuf-c library. * common.am This is an automake fragment that is intended to be shared by Makefile.am files in the tree. It currently includes definitions related to protobuf. * configure.ac - Add logic to optionally build protobuf code. By default, protobuf support is enabled if the protobuf C compiler (protoc-c) is available, and the associated header files/library can be found. The user can choose to override this behavior via the new --disable-protobuf/--enable-protobuf flags. - Include the quagga protobuf library (qpb) in the build. * .gitignore Ignore source code generated by protobuf compiler. * Makefile.am Add 'qpb' to the list of subdirectories. Signed-off-by: Avneesh Sachdev <avneesh@sproute.com> Edited: Paul Jakma <paul.jakma@hpe.com>: Change the sense of the configure enable option to require explicit specifying, as an experimental feature.

Commit:93c7bed
Author:Avneesh Sachdev
Committer:Donald Sharp

fpm: Add protobuf support for FPM. Code that allows a client to convey routes to a Forwarding Plane Manager component using protobuf instead of netlink.. * fpm/fpm.proto Protobuf definitions pertaining to the Forwarding Plane Manager. In particular, this file defines the AddRoute and DeleteRoute messages. * fpm/fpm.h Tweak FPM message header definition to also allow messages to be encoded in protobuf format. * fpm/{fpm_pb.h,.gitignore,.Makefile.am} Add the fpm_pb library, which contains code for interfacing with the FPM using protobuf. * configure.ac Generate fpm/Makefile. * Makefile.am Add fpm subdirectory to build. * common.am Add flags to be used by clients of the fpm_pb library. Signed-off-by: Avneesh Sachdev <avneesh@sproute.com>

Commit:4087409
Author:Avneesh Sachdev
Committer:Donald Sharp

Use only the ISC license for .proto files. Simplify licensing for protobuf files based on discussion on the quagga-dev mailing list. Previously, users could choose between the GPL and the ISC license. Signed-off-by: Avneesh Sachdev <avneesh@sproute.com> Signed-off-by: Avneesh Sachdev <avneesh@sproute.com>