mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
*: remove confd plugin
ConfD is not supported anymore and its use is discouraged by developers: https://discuss.tail-f.com/t/confd-premium-no-longer-available-future-of-confd/4552/6 Remove the code and all mentions of ConfD from the documentation. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
4b512f2f07
commit
84a00a47b8
19
configure.ac
19
configure.ac
|
@ -751,8 +751,6 @@ AC_ARG_ENABLE([snmp],
|
||||||
AS_HELP_STRING([--enable-snmp], [enable SNMP support for agentx]))
|
AS_HELP_STRING([--enable-snmp], [enable SNMP support for agentx]))
|
||||||
AC_ARG_ENABLE([config_rollbacks],
|
AC_ARG_ENABLE([config_rollbacks],
|
||||||
AS_HELP_STRING([--enable-config-rollbacks], [enable configuration rollbacks (requires sqlite3)]))
|
AS_HELP_STRING([--enable-config-rollbacks], [enable configuration rollbacks (requires sqlite3)]))
|
||||||
AC_ARG_ENABLE([confd],
|
|
||||||
AS_HELP_STRING([--enable-confd=ARG], [enable confd integration]))
|
|
||||||
AC_ARG_ENABLE([sysrepo],
|
AC_ARG_ENABLE([sysrepo],
|
||||||
AS_HELP_STRING([--enable-sysrepo], [enable sysrepo integration]))
|
AS_HELP_STRING([--enable-sysrepo], [enable sysrepo integration]))
|
||||||
AC_ARG_ENABLE([grpc],
|
AC_ARG_ENABLE([grpc],
|
||||||
|
@ -2081,22 +2079,6 @@ if test "$enable_config_rollbacks" = "yes"; then
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ---------------
|
|
||||||
dnl confd
|
|
||||||
dnl ---------------
|
|
||||||
if test "$enable_confd" != "" -a "$enable_confd" != "no"; then
|
|
||||||
AC_CHECK_PROG([CONFD], [confd], [confd], [/bin/false], "${enable_confd}/bin")
|
|
||||||
if test "$CONFD" = "/bin/false"; then
|
|
||||||
AC_MSG_ERROR([confd was not found on your system.])]
|
|
||||||
fi
|
|
||||||
AC_CHECK_PROG([CONFDC], [confdc], [confdc], [/bin/false], "${enable_confd}/bin")
|
|
||||||
CONFD_CFLAGS="-I${enable_confd}/include -L${enable_confd}/lib"
|
|
||||||
AC_SUBST([CONFD_CFLAGS])
|
|
||||||
CONFD_LIBS="-lconfd"
|
|
||||||
AC_SUBST([CONFD_LIBS])
|
|
||||||
AC_DEFINE([HAVE_CONFD], [1], [Enable confd integration])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl ---------------
|
dnl ---------------
|
||||||
dnl sysrepo
|
dnl sysrepo
|
||||||
dnl ---------------
|
dnl ---------------
|
||||||
|
@ -2766,7 +2748,6 @@ AM_CONDITIONAL([ENABLE_BGP_VNC], [test "$enable_bgp_vnc" != "no"])
|
||||||
AM_CONDITIONAL([BGP_BMP], [$bgpd_bmp])
|
AM_CONDITIONAL([BGP_BMP], [$bgpd_bmp])
|
||||||
dnl northbound
|
dnl northbound
|
||||||
AM_CONDITIONAL([SQLITE3], [$SQLITE3])
|
AM_CONDITIONAL([SQLITE3], [$SQLITE3])
|
||||||
AM_CONDITIONAL([CONFD], [test "$enable_confd" != ""])
|
|
||||||
AM_CONDITIONAL([SYSREPO], [test "$enable_sysrepo" = "yes"])
|
AM_CONDITIONAL([SYSREPO], [test "$enable_sysrepo" = "yes"])
|
||||||
AM_CONDITIONAL([GRPC], [test "$enable_grpc" = "yes"])
|
AM_CONDITIONAL([GRPC], [test "$enable_grpc" = "yes"])
|
||||||
AM_CONDITIONAL([ZEROMQ], [test "$ZEROMQ" = "true"])
|
AM_CONDITIONAL([ZEROMQ], [test "$ZEROMQ" = "true"])
|
||||||
|
|
|
@ -12,8 +12,7 @@ Auto-generated CLI commands
|
||||||
In order to have less code to maintain, it should be possible to write a
|
In order to have less code to maintain, it should be possible to write a
|
||||||
tool that auto-generates CLI commands based on the FRR YANG models. As a
|
tool that auto-generates CLI commands based on the FRR YANG models. As a
|
||||||
matter of fact, there are already a number of NETCONF-based CLIs that do
|
matter of fact, there are already a number of NETCONF-based CLIs that do
|
||||||
exactly that (e.g. `Clixon <https://github.com/clicon/clixon>`__,
|
exactly that (e.g. `Clixon <https://github.com/clicon/clixon>`__).
|
||||||
ConfD’s CLI).
|
|
||||||
|
|
||||||
The problem however is that there isn’t an exact one-to-one mapping
|
The problem however is that there isn’t an exact one-to-one mapping
|
||||||
between the existing CLI commands and the corresponding YANG nodes from
|
between the existing CLI commands and the corresponding YANG nodes from
|
||||||
|
@ -27,11 +26,6 @@ command for each YANG leaf, (leaf-)list and presence-container. The
|
||||||
ripd’s ``timers basic`` command, for instance, would become three
|
ripd’s ``timers basic`` command, for instance, would become three
|
||||||
different commands, which would be undesirable.
|
different commands, which would be undesirable.
|
||||||
|
|
||||||
This Tail-f’s®
|
|
||||||
`document <http://info.tail-f.com/hubfs/Whitepapers/Tail-f_ConfD-CLI__Cfg_Mode_App_Note_Rev%20C.pdf>`__
|
|
||||||
shows how to customize ConfD auto-generated CLI commands using YANG
|
|
||||||
annotations.
|
|
||||||
|
|
||||||
The good news is that *libyang* allows users to create plugins to
|
The good news is that *libyang* allows users to create plugins to
|
||||||
implement their own YANG extensions, which can be used to implement CLI
|
implement their own YANG extensions, which can be used to implement CLI
|
||||||
annotations. If done properly, a CLI generator can save FRR developers
|
annotations. If done properly, a CLI generator can save FRR developers
|
||||||
|
@ -76,8 +70,8 @@ Example of how this feature could be provided in the CLI:
|
||||||
``commit confirmed [minutes <1-60>]``. The ability to do confirmed
|
``commit confirmed [minutes <1-60>]``. The ability to do confirmed
|
||||||
commits should also be exposed in the northbound API so that the
|
commits should also be exposed in the northbound API so that the
|
||||||
northbound plugins can also take advantage of it (in the case of the
|
northbound plugins can also take advantage of it (in the case of the
|
||||||
Sysrepo and ConfD plugins, confirmed commits are implemented externally
|
Sysrepo plugin, confirmed commit is implemented externally in the
|
||||||
in the *netopeer2-server* and *confd* daemons, respectively).
|
*netopeer2-server* daemon).
|
||||||
|
|
||||||
Proposed feature: enable/disable configuration commands/sections
|
Proposed feature: enable/disable configuration commands/sections
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -116,7 +116,7 @@ multitude of different management APIs, all of them connected to the
|
||||||
northbound layer of the FRR daemons. By default, only the CLI interface
|
northbound layer of the FRR daemons. By default, only the CLI interface
|
||||||
is compiled built-in in the FRR daemons. The other management interfaces
|
is compiled built-in in the FRR daemons. The other management interfaces
|
||||||
are provided as optional plugins and need to be loaded during the daemon
|
are provided as optional plugins and need to be loaded during the daemon
|
||||||
initialization (e.g. *zebra -M confd*). This design makes it possible to
|
initialization (e.g. *zebra -M grpc*). This design makes it possible to
|
||||||
integrate FRR with different NETCONF solutions without introducing
|
integrate FRR with different NETCONF solutions without introducing
|
||||||
vendor lock-in. The [[Plugins - Writing Your Own]] page explains how to
|
vendor lock-in. The [[Plugins - Writing Your Own]] page explains how to
|
||||||
write custom northbound plugins that can be tailored to all needs
|
write custom northbound plugins that can be tailored to all needs
|
||||||
|
|
|
@ -8,23 +8,3 @@ This short demo shows some of the capabilities of the new transactional
|
||||||
CLI:
|
CLI:
|
||||||
|
|
||||||
|asciicast1|
|
|asciicast1|
|
||||||
|
|
||||||
ConfD + NETCONF + Cisco YDK
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
This is a very simple demo of *ripd* being configured by a python
|
|
||||||
script. The script uses NETCONF to communicate with *ripd*, which has
|
|
||||||
the ConfD plugin loaded. The most interesting part, however, is the fact
|
|
||||||
that the python script is not using handcrafted XML payloads to
|
|
||||||
configure *ripd*. Instead, the script is using python bindings generated
|
|
||||||
using Cisco’s YANG Development Kit (YDK).
|
|
||||||
|
|
||||||
- Script used in the demo:
|
|
||||||
https://gist.github.com/rwestphal/defa9bd1ccf216ab082d4711ae402f95
|
|
||||||
|
|
||||||
|asciicast2|
|
|
||||||
|
|
||||||
.. |asciicast1| image:: https://asciinema.org/a/jL0BS5HfP2kS6N1HfgsZvfZk1.png
|
|
||||||
:target: https://asciinema.org/a/jL0BS5HfP2kS6N1HfgsZvfZk1
|
|
||||||
.. |asciicast2| image:: https://asciinema.org/a/VfMElNxsjLcdvV7484E6ChxWv.png
|
|
||||||
:target: https://asciinema.org/a/VfMElNxsjLcdvV7484E6ChxWv
|
|
||||||
|
|
|
@ -195,14 +195,6 @@ pyangbind
|
||||||
- GitHub page: https://github.com/robshakir/pyangbind
|
- GitHub page: https://github.com/robshakir/pyangbind
|
||||||
- Documentation: http://pynms.io/pyangbind/
|
- Documentation: http://pynms.io/pyangbind/
|
||||||
|
|
||||||
ConfD
|
|
||||||
^^^^^
|
|
||||||
|
|
||||||
- Official webpage (for ConfD Basic):
|
|
||||||
http://www.tail-f.com/confd-basic/
|
|
||||||
- Training Videos: http://www.tail-f.com/confd-training-videos/
|
|
||||||
- Forum: http://discuss.tail-f.com/
|
|
||||||
|
|
||||||
Sysrepo
|
Sysrepo
|
||||||
^^^^^^^
|
^^^^^^^
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ Operational data
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Writing API-agnostic code for YANG-modeled operational data is
|
Writing API-agnostic code for YANG-modeled operational data is
|
||||||
challenging. ConfD and Sysrepo, for instance, have completely different
|
challenging. Sysrepo, for instance, has completely different API to
|
||||||
APIs to fetch operational data. So how can we write API-agnostic
|
fetch operational data. So how can we write API-agnostic callbacks
|
||||||
callbacks that can be used by both the ConfD and Sysrepo plugins, and
|
that can be used by both the Sysrepo plugin, and any other northbound
|
||||||
any other northbound client that might be written in the future?
|
client that might be written in the future?
|
||||||
|
|
||||||
As an additional requirement, the callbacks must be designed in a way
|
As an additional requirement, the callbacks must be designed in a way
|
||||||
that makes in-place XPath filtering possible. As an example, a
|
that makes in-place XPath filtering possible. As an example, a
|
||||||
|
@ -94,27 +94,18 @@ in the northbound architecture:
|
||||||
*/
|
*/
|
||||||
void *(*lookup_entry)(struct yang_list_keys *keys);
|
void *(*lookup_entry)(struct yang_list_keys *keys);
|
||||||
|
|
||||||
These callbacks were designed to provide maximum flexibility, and borrow
|
These callbacks were designed to provide maximum flexibility. Each
|
||||||
a lot of ideas from the ConfD API. Each callback does one and only one
|
callback does one and only one task, they are indivisible primitives
|
||||||
task, they are indivisible primitives that can be combined in several
|
that can be combined in several different ways to iterate over operational
|
||||||
different ways to iterate over operational data. The extra flexibility
|
data. The extra flexibility certainly has a performance cost, but it’s the
|
||||||
certainly has a performance cost, but it’s the price to pay if we want
|
price to pay if we want to expose FRR operational data using several
|
||||||
to expose FRR operational data using several different management
|
different management interfaces (e.g. Sysrepo+Netopeer2). In the
|
||||||
interfaces (e.g. NETCONF via either ConfD or Sysrepo+Netopeer2). In the
|
|
||||||
future it might be possible to introduce optional callbacks that do
|
future it might be possible to introduce optional callbacks that do
|
||||||
things like returning multiple objects at once. They would provide
|
things like returning multiple objects at once. They would provide
|
||||||
enhanced performance when iterating over large lists, but their use
|
enhanced performance when iterating over large lists, but their use
|
||||||
would be limited by the northbound plugins that can be integrated with
|
would be limited by the northbound plugins that can be integrated with
|
||||||
them.
|
them.
|
||||||
|
|
||||||
NOTE: using the northbound callbacks as a base, the ConfD plugin can
|
|
||||||
provide up to 100 objects between each round trip between FRR and the
|
|
||||||
*confd* daemon. Preliminary tests showed FRR taking ~7 seconds
|
|
||||||
(asynchronously, without blocking the main pthread) to return a RIP
|
|
||||||
table containing 100k routes to a NETCONF client connected to *confd*
|
|
||||||
(JSON was used as the encoding format). Work needs to be done to find
|
|
||||||
the bottlenecks and optimize this operation.
|
|
||||||
|
|
||||||
The [[Plugins - Writing Your Own]] page explains how the northbound
|
The [[Plugins - Writing Your Own]] page explains how the northbound
|
||||||
plugins can fetch operational data using the aforementioned northbound
|
plugins can fetch operational data using the aforementioned northbound
|
||||||
callbacks, and how in-place XPath filtering can be implemented.
|
callbacks, and how in-place XPath filtering can be implemented.
|
||||||
|
@ -351,10 +342,10 @@ are being iterated over. If that is not done, the list entry returned by
|
||||||
this callback can become a dangling pointer when used in another
|
this callback can become a dangling pointer when used in another
|
||||||
callback.
|
callback.
|
||||||
|
|
||||||
Currently the ConfD and Sysrepo plugins run only in the main pthread.
|
Currently the Sysrepo plugin runs only in the main pthread. The plan in the
|
||||||
The plan in the short-term is to introduce a separate pthread only for
|
short-term is to introduce a separate pthread only for handling operational
|
||||||
handling operational data, and use the main pthread only for handling
|
data, and use the main pthread only for handling configuration changes,
|
||||||
configuration changes, RPCs and notifications.
|
RPCs and notifications.
|
||||||
|
|
||||||
RPCs and Actions
|
RPCs and Actions
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
@ -396,8 +387,8 @@ some EXEC-level commands using YANG so that their functionality is
|
||||||
exposed to other management interfaces other than the CLI. As an
|
exposed to other management interfaces other than the CLI. As an
|
||||||
example, if the ``clear bgp`` command is modeled using a YANG RPC, and a
|
example, if the ``clear bgp`` command is modeled using a YANG RPC, and a
|
||||||
corresponding ``rpc`` callback is written, then it should be possible to
|
corresponding ``rpc`` callback is written, then it should be possible to
|
||||||
clear BGP neighbors using NETCONF and RESTCONF with that RPC (the ConfD
|
clear BGP neighbors using NETCONF and RESTCONF with that RPC (the Sysrepo
|
||||||
and Sysrepo plugins have full support for YANG RPCs and actions).
|
plugin has full support for YANG RPCs and actions).
|
||||||
|
|
||||||
Here’s an example of a very simple RPC modeled using YANG:
|
Here’s an example of a very simple RPC modeled using YANG:
|
||||||
|
|
||||||
|
@ -568,8 +559,7 @@ Now sending the *authentication-failure* YANG notification should be as
|
||||||
simple as calling the above function and provide the appropriate
|
simple as calling the above function and provide the appropriate
|
||||||
interface name. The notification will be processed by all northbound
|
interface name. The notification will be processed by all northbound
|
||||||
plugins that subscribed a callback to the ``nb_notification_send`` hook.
|
plugins that subscribed a callback to the ``nb_notification_send`` hook.
|
||||||
The ConfD and Sysrepo plugins, for instance, use this hook to relay the
|
The Sysrepo plugin, for instance, uses this hook to relay the notifications
|
||||||
notifications to the *confd*/*sysrepod* daemons, which can generate
|
to the *sysrepod* daemon, which can generate NETCONF notifications to subscribed
|
||||||
NETCONF notifications to subscribed clients. When no northbound plugin
|
clients. When no northbound plugin is loaded, ``nb_notification_send()`` doesn’t
|
||||||
is loaded, ``nb_notification_send()`` doesn’t do anything and the
|
do anything and the notifications are ignored.
|
||||||
notifications are ignored.
|
|
||||||
|
|
|
@ -326,11 +326,6 @@ options from the list below.
|
||||||
|
|
||||||
Build with configuration rollback support. Requires SQLite3.
|
Build with configuration rollback support. Requires SQLite3.
|
||||||
|
|
||||||
.. option:: --enable-confd=<dir>
|
|
||||||
|
|
||||||
Build the ConfD northbound plugin. Look for the libconfd libs and headers
|
|
||||||
in `dir`.
|
|
||||||
|
|
||||||
.. option:: --enable-sysrepo
|
.. option:: --enable-sysrepo
|
||||||
|
|
||||||
Build the Sysrepo northbound plugin.
|
Build the Sysrepo northbound plugin.
|
||||||
|
|
|
@ -307,24 +307,6 @@ static struct log_ref ferr_lib_err[] = {
|
||||||
.description = "The northbound subsystem, during initialization, has detected that a libyang plugin failed to be loaded",
|
.description = "The northbound subsystem, during initialization, has detected that a libyang plugin failed to be loaded",
|
||||||
.suggestion = "Check if the FRR libyang plugins were installed correctly in the system",
|
.suggestion = "Check if the FRR libyang plugins were installed correctly in the system",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.code = EC_LIB_CONFD_INIT,
|
|
||||||
.title = "ConfD initialization error",
|
|
||||||
.description = "Upon startup FRR failed to properly initialize and startup the ConfD northbound plugin",
|
|
||||||
.suggestion = "Check if ConfD is installed correctly in the system. Also, check if the confd daemon is running.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.code = EC_LIB_CONFD_DATA_CONVERT,
|
|
||||||
.title = "ConfD data conversion error",
|
|
||||||
.description = "An error has occurred while converting a ConfD data value (binary) to a string",
|
|
||||||
.suggestion = "Open an Issue with all relevant log files and restart FRR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.code = EC_LIB_LIBCONFD,
|
|
||||||
.title = "libconfd error",
|
|
||||||
.description = "The northbound subsystem has detected that the libconfd library returned an error",
|
|
||||||
.suggestion = "Open an Issue with all relevant log files and restart FRR"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.code = EC_LIB_SYSREPO_INIT,
|
.code = EC_LIB_SYSREPO_INIT,
|
||||||
.title = "Sysrepo initialization error",
|
.title = "Sysrepo initialization error",
|
||||||
|
|
|
@ -65,9 +65,6 @@ enum lib_log_refs {
|
||||||
EC_LIB_NB_TRANSACTION_RECORD_FAILED,
|
EC_LIB_NB_TRANSACTION_RECORD_FAILED,
|
||||||
EC_LIB_LIBYANG,
|
EC_LIB_LIBYANG,
|
||||||
EC_LIB_LIBYANG_PLUGIN_LOAD,
|
EC_LIB_LIBYANG_PLUGIN_LOAD,
|
||||||
EC_LIB_CONFD_INIT,
|
|
||||||
EC_LIB_CONFD_DATA_CONVERT,
|
|
||||||
EC_LIB_LIBCONFD,
|
|
||||||
EC_LIB_SYSREPO_INIT,
|
EC_LIB_SYSREPO_INIT,
|
||||||
EC_LIB_SYSREPO_DATA_CONVERT,
|
EC_LIB_SYSREPO_DATA_CONVERT,
|
||||||
EC_LIB_LIBSYSREPO,
|
EC_LIB_LIBSYSREPO,
|
||||||
|
|
|
@ -2403,8 +2403,6 @@ const char *nb_client_name(enum nb_client client)
|
||||||
switch (client) {
|
switch (client) {
|
||||||
case NB_CLIENT_CLI:
|
case NB_CLIENT_CLI:
|
||||||
return "CLI";
|
return "CLI";
|
||||||
case NB_CLIENT_CONFD:
|
|
||||||
return "ConfD";
|
|
||||||
case NB_CLIENT_SYSREPO:
|
case NB_CLIENT_SYSREPO:
|
||||||
return "Sysrepo";
|
return "Sysrepo";
|
||||||
case NB_CLIENT_GRPC:
|
case NB_CLIENT_GRPC:
|
||||||
|
|
|
@ -621,11 +621,6 @@ struct nb_node {
|
||||||
|
|
||||||
/* Flags. */
|
/* Flags. */
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
|
|
||||||
#ifdef HAVE_CONFD
|
|
||||||
/* ConfD hash value corresponding to this YANG path. */
|
|
||||||
int confd_hash;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
/* The YANG container or list contains only config data. */
|
/* The YANG container or list contains only config data. */
|
||||||
#define F_NB_NODE_CONFIG_ONLY 0x01
|
#define F_NB_NODE_CONFIG_ONLY 0x01
|
||||||
|
@ -700,7 +695,6 @@ enum nb_error {
|
||||||
enum nb_client {
|
enum nb_client {
|
||||||
NB_CLIENT_NONE = 0,
|
NB_CLIENT_NONE = 0,
|
||||||
NB_CLIENT_CLI,
|
NB_CLIENT_CLI,
|
||||||
NB_CLIENT_CONFD,
|
|
||||||
NB_CLIENT_SYSREPO,
|
NB_CLIENT_SYSREPO,
|
||||||
NB_CLIENT_GRPC,
|
NB_CLIENT_GRPC,
|
||||||
NB_CLIENT_PCEP,
|
NB_CLIENT_PCEP,
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -409,18 +409,6 @@ lib_libfrrzmq_la_SOURCES = \
|
||||||
lib/frr_zmq.c \
|
lib/frr_zmq.c \
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#
|
|
||||||
# Tail-f's ConfD support
|
|
||||||
#
|
|
||||||
if CONFD
|
|
||||||
module_LTLIBRARIES += lib/confd.la
|
|
||||||
endif
|
|
||||||
|
|
||||||
lib_confd_la_CFLAGS = $(AM_CFLAGS) $(CONFD_CFLAGS)
|
|
||||||
lib_confd_la_LDFLAGS = $(MODULE_LDFLAGS)
|
|
||||||
lib_confd_la_LIBADD = lib/libfrr.la $(CONFD_LIBS)
|
|
||||||
lib_confd_la_SOURCES = lib/northbound_confd.c
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sysrepo support
|
# Sysrepo support
|
||||||
#
|
#
|
||||||
|
|
|
@ -45,9 +45,6 @@ struct yang_module {
|
||||||
RB_ENTRY(yang_module) entry;
|
RB_ENTRY(yang_module) entry;
|
||||||
const char *name;
|
const char *name;
|
||||||
const struct lys_module *info;
|
const struct lys_module *info;
|
||||||
#ifdef HAVE_CONFD
|
|
||||||
int confd_hash;
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYSREPO
|
#ifdef HAVE_SYSREPO
|
||||||
sr_subscription_ctx_t *sr_subscription;
|
sr_subscription_ctx_t *sr_subscription;
|
||||||
struct event *sr_thread;
|
struct event *sr_thread;
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
module confd.frr-ripd {
|
|
||||||
namespace "urn:dummy";
|
|
||||||
prefix "dummy";
|
|
||||||
|
|
||||||
import tailf-common {
|
|
||||||
prefix tailf;
|
|
||||||
}
|
|
||||||
import frr-ripd {
|
|
||||||
prefix frr-ripd;
|
|
||||||
}
|
|
||||||
|
|
||||||
tailf:annotate-module "frr-ripd" {
|
|
||||||
tailf:annotate-statement "container[name='ripd']" {
|
|
||||||
tailf:annotate-statement "list[name='instance']" {
|
|
||||||
tailf:annotate-statement "container[name='state']" {
|
|
||||||
tailf:callpoint "state";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tailf:annotate-statement "rpc[name='clear-rip-route']" {
|
|
||||||
tailf:actionpoint "actionpoint";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
module confd.frr-ripngd {
|
|
||||||
namespace "urn:dummy";
|
|
||||||
prefix "dummy";
|
|
||||||
|
|
||||||
import tailf-common {
|
|
||||||
prefix tailf;
|
|
||||||
}
|
|
||||||
import frr-ripngd {
|
|
||||||
prefix frr-ripngd;
|
|
||||||
}
|
|
||||||
|
|
||||||
tailf:annotate-module "frr-ripngd" {
|
|
||||||
tailf:annotate-statement "container[name='ripngd']" {
|
|
||||||
tailf:annotate-statement "list[name='instance']" {
|
|
||||||
tailf:annotate-statement "container[name='state']" {
|
|
||||||
tailf:callpoint "state";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tailf:annotate-statement "rpc[name='clear-ripng-route']" {
|
|
||||||
tailf:actionpoint "actionpoint";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -106,31 +106,4 @@ endif
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
yang/*.c \
|
yang/*.c \
|
||||||
yang/ietf/*.c \
|
yang/ietf/*.c \
|
||||||
yang/confd/*.c \
|
|
||||||
#
|
#
|
||||||
|
|
||||||
if CONFD
|
|
||||||
|
|
||||||
SUBMODULES = $(shell cd $(top_srcdir); grep -l belongs-to $(dist_yangmodels_DATA))
|
|
||||||
EXCLUDED_MODULES = $(SUBMODULES) yang/frr-module-translator.yang
|
|
||||||
YANG_MODULES = $(filter-out $(EXCLUDED_MODULES),$(dist_yangmodels_DATA))
|
|
||||||
|
|
||||||
fxsdir = $(sysconfdir)/confd
|
|
||||||
fxs_DATA = $(YANG_MODULES:.yang=.fxs)
|
|
||||||
|
|
||||||
SUFFIXES += .fxs
|
|
||||||
CLEANFILES += $(fxs_DATA)
|
|
||||||
|
|
||||||
AM_V_CONFDC = $(AM_V_CONFDC_@AM_V@)
|
|
||||||
AM_V_CONFDC_ = $(AM_V_CONFDC_@AM_DEFAULT_V@)
|
|
||||||
AM_V_CONFDC_0 = @echo " CONFDC " $@;
|
|
||||||
|
|
||||||
CONFDC_FLAGS = --yangpath $(srcdir)/yang --yangpath $(srcdir)/yang/ietf
|
|
||||||
|
|
||||||
yang/%.fxs: yang/%.yang yang/confd/confd.%.yang
|
|
||||||
$(AM_V_CONFDC)$(CONFDC) $(CONFDC_FLAGS) -c -o $@ -a $(srcdir)/yang/confd/confd.$*.yang -- $<
|
|
||||||
|
|
||||||
yang/%.fxs: yang/%.yang
|
|
||||||
$(AM_V_CONFDC)$(CONFDC) $(CONFDC_FLAGS) -c -o $@ -- $<
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
Loading…
Reference in a new issue