YumaPro README

  • Last Updated: 2024-10-10

Pre-Build steps:

Compiler flag locations:

  • set netconf/src/platform/platform.profile details if needed

  • see netconf/src/platform/procdefs.h for common H defs

  • CFLAGS and other make details are here

To build:

> cd to the yumapro top directory
> make [Build Variables]
> sudo make [Build Variables] install

Build Notes

To build all default components (shared libs) on Linux, this will build all default components and install it in the default locations:

  • make [FLAGS]

  • [sudo] make [FLAGS] install

For example, to build all default components (shared libs) on Fedora, 64-bit:

  • make LIB64=1

  • [sudo] make LIB64=1 install

For example, to build all default components (shared libs) except /usr/lib/yuma/libtoaster.so

  • make NOTOASTER=1

  • [sudo] make NOTOASTER=1 install

External file dependencies (for netconfd, optional):

  • /etc/services

  • /etc/ssh/sshd_config

  • /etc/apache2/sites-available/yang-api.conf

  • /etc/apache2/sites-available/restconf.conf

  • a2ensite yang-api

  • a2ensite restconf

  • a2enmod fcgi

  • SELinux config to allow access to port 830

Default Installed Programs:

  • /usr/bin/db-api-app [WITH_DB_API]

  • /usr/bin/yangcli-pro

  • /usr/bin/yangdump-pro

  • /usr/bin/yangdump-sdk [PRIOR TO 22.10T-9]

  • /usr/bin/yangdiff-pro

  • /usr/bin/ypcontrol

  • /usr/bin/ypwatcher

  • /usr/bin/yp-shell [WITH_CLI]

  • /usr/bin/yp-ha-app [WITH_YP_HA]

  • /usr/sbin/netconfd-pro

  • /usr/sbin/netconf-subsystem-pro

  • /usr/sbin/restconf [WITH_RESTCONF]

  • /usr/sbin/yang-api [WITH_YANGAPI]

Default Installed Libraries:

  • /usr/lib/libyumapro_agt.so.MM.NN

  • /usr/lib/libyumapro_db-api.so.MM.NN [WITH_DB_API]

  • /usr/lib/libyumapro_mgr.so.MM.NN

  • /usr/lib/libyumapro_ncx.so.MM.NN

  • /usr/lib/libyumapro_sil-sa.so.MM.NN [WITH_SIL_SA]

  • /usr/lib/libyumapro_ycli.so.MM.NN

  • /usr/lib/libyumapro_ycontrol.so.MM.NN [WITH_YCONTROL]

  • /usr/lib/yumapro/libtoaster.so

  • /usr/lib/yumapro/libyp_system.so

  • /usr/lib/yumapro/libsil-error.so

Default Installed Libraries if LIB64=1:

  • /usr/lib64/...

Default Installed Additional Files:

/usr/share/doc/yumapro/* -- user documentation /etc/yumapro/* -- sample application config files /usr/share/yumapro/* -- root of all YumaPro static data files /usr/share/yumapro/modules/* -- root of default installed YANG modules /usr/man/man1/* -- man page files installed here

User-Specific Files

$HOME/.yumapro -- yangcli-pro and netconfd-pro files

YumaPro Package Variants:

# the docs are no longer split into several bundles for installation # Instead, 1 bundle for RPM and 1 for Debian are produced # # yumapro-doc # # BINARY PACKAGES # # yumapro-sdk ==> PACKAGE=DEVELOPER # yumapro-pthreads ==> PACKAGE=DEVELOPER PTHREADS=1 # yangcli-pro ==> PACKAGE=CLIENT # # NO LONGER USED # # yumapro ==> PACKAGE=USER # yumapro ==> PACKAGE=SERVER #

Build Variables:

BASIC

BASIC=1: build yumapro-sdk-basic package Used by YumaWorks packaging only. Do Not Use!

BITBAKE

BITBAKE=1: build for Yocto/bitbake environment.

  • Should set NO_LIBSSH2=1 and NO_LIBSSL=1 if building yp-shell.

  • Can also use STATIC=1 and STATIC_SERVER=1.

  • Do not use UCLINUX=1.

BUILD_LIBS_ONLY

BUILD_LIBS_ONLY=1: build only the libraries (static and or dynamic)

  • Do not build the SDK applications.

  • Do not use dl library in the yangcli_show_extern.cpp file

CENTOS

CENTOS5=1: build for the CentOS 5.10 platform.

  • Must also use LIB64=1 for x86_64 architecture.

CLANG

CLANG=1: use clang instead of gcc for the C compiler and use clang++ instead of g++ for the C++ compiler and linker

  • Default is to use gcc. Ignored if any of these flags set:

    • CROSS_TARGET

    • PACKAGE_BUILD

    • GPROFILE

CLANG_ASAN

CLANG_ASAN=1: use clang in LeakSanitizer mode; For debugging only; will force the compiler and linker to use clang and add flags such as -fsanitize=address

COVERITY

COVERITY=1: special flag used with MAC=1 to allow Coverity

  • Static Analysis tools to run on Ubuntu but build with MAC=1 compiler flags. DO NOT USE THIS FLAG FOR A REAL BUILD.

CROSS_TARGET

CROSS_TARGET=<string>: Define the prefix to use for a cross target toolchain.

  • Example CROSS_TARGET=arm-linux-gnueabi-

  • Note that cross compiling requires that the target architecture linker finds the correct external libraries such as libxml2

  • Do not use this parameter for uCLinux. Use UCLINUX=1

  • Do not use this parameter for Yocto. Use BITBAKE=1 instead

  • The tool names will be appended to the $(CROSS_TARGET) value if it is set. E.g. $(CROSS_TARGET)gcc will resolve to arm-linux-gnueabi-gcc

CYGWIN

CYGWIN=1: build on windows within cygwin environment (OBSOLETE! NOT SUPPORTED!)

DEBIAN

DEBIAN=1: set for Ubuntu packaging build; do not use in normal builds, Used by YumaWorks packaging only. Do Not Use!

DEBIAN_MAKE

DEBIAN_MAKE=1: set for ubuntu packaing build; do not use in normal builds; Indicates compile phase of build Used by YumaWorks packaging only. Do Not Use!

DEBUG

This parameter is used to enable extra debugging checks and logging in the YumaPro programs.

  • DEBUG=1: set to add gdb symbols instead of -O2;

  • does not remove the #ifdef DEBUG function NULL pointer checks in external functions

  • the symbol DEBUG is defined unless the make flag PRODUCTION=1 is used

  • This is often used to make feature debugging possible for programmers without adding that code to production builds

Example Usage:

#ifdef DEBUG
#define FOO_DEBUG 1
#endif

// ...

#ifdef FOO_DEBUG
if (LOGDEBUG2) {
    log_debug2("\nfoo: some internal feature debugging info");
}
#endif  // FOO_DEBUG

DEBUG2

This parameter is used to enable even more extra debugging checks and logging in the YumaPro programs.

  • DEBUG2=1: set to enable extra debugging code

  • DEBUG=1 must also be set

  • Used sometimes to enable debugging of specific sub-components within a module

Example Usage:

#ifdef DEBUG
#ifdef DEBUG2
#define FOO_DEBUG_PARSE 1
#endif
#endif

DEBUG_LOG_TLS

DEBUG_LOG_TLS=1: set to enable output buffer tracing for netconfd-pro using WITH_OPENSSL=1 on a NETCONF over TLS session

  • This option may be a security risk since the raw buffer output is not pre-screened for passwords or other sensitive data

  • The --log-level must be set to 'debug2' or higher for the buffer to be logged

DESTDIR

DESTDIR=string: set the debian target build (default NULL)

  • This variable must always be set for 'fake-root' builds such as Yocto Linux or PetaLinux

  • The YP_SYSROOT parameter is usually needed in addition to this parameter to set the 'sysroot' in the compiler

DOC

DOC=1: debian packaging build flag to build the yuma-doc package. Do not use in normal builds.

DOCDIR

DOCDIR=/path/to/docs: set to override the default location to install user manuals, which is $(PREFIX)/share/doc/yumapro with default prefix is /usr/share/doc/yumapro

ETC_PREFIX

ETC_PREFIX=string: set the top etc dir (after DESTDIR)

  • default: /etc

EVAL (INTERNAL)

EVAL=1: build the evaluation version of the YumaPro software Used by YumaWorks packaging only. Do Not Use!

  • The following server restrictions will apply:

    • 250 requests before error returned for every request

    • 10 sessions

EVERYTHING

EVERYTHING=1: build all optional code modules.

  • This flag cannot be be used if PACKAGE_BUILD=1 is set.

  • Must not use for packaging builds, which always set individual flags

  • Some optional code modules are not included in this flag if they are rare or require special support libraries

  • Do not use in production builds!

  • Some test modules are included if this flag is used

  • The definition of this macro is different in every release train

Equivalent to:

EXTRA_CFLAGS

EXTRA_CFLAGS=<string> : Additional compiler flags to add to the CFLAGS directive. It will be added to CPPFLAGS as well for C++ compilation

FREEBSD

FREEBSD=1: Build for a FreeBSD platform

FORCE_YUMA_HOME

FORCE_YUMA_HOME=1: use when building SIL libraries to link against a development version of yuma. The YUMA_HOME environment variable must be set, and it must point to the 'netconf' directory:

Bash example using 'mybranch':

export YUMA_HOME=/home/andy/swdev/yuma/trunk/branches/mybranch/netconf

The yuma include (H) files from $(YUMA_HOME)/src/* will be used instead of the system H files in /usr/include/yuma.

The libagt and libncx libraries from $(YUMA_HOME)/target/lib will be used instead of the system libraries in /usr/lib or /usr/lib64. The static versions (libagt.a and libncx.a) will be expected if STATIC=1 is also set. Otherwise the dynamic library versions will be expected instead.

FULL_STATIC

FULL_STATIC=1: solve linking problems forcing static versions of all external libraries (used only by debian package build) This is deprecated and no longer used in any packaging builds

GO_BIN

GO_BIN=<dirspec>: specify the $GOBIN variable dirspec to use when building YP-gNMI application. Default is $HOME/go/bin. Ignored if PACKAGE_BUILD=1 is also used.

GO_PATH

GO_PATH=<dirspec>: specify the $GOPATH variable dirspec to use when building YP-gNMI application. Default is $HOME/go. Ignored if PACKAGE_BUILD=1 is also used.

GPROFILE

GPROFILE=1: add -pg to the CFLAGS to enable GCC profiling The STATIC=1 option should also be used.

GUI_LOGGING

GUI_LOGGING=1: internal flag used to build libyumapro_ncx without the log_common and log_append functions so the Qt version of these functions can be used instead

HOST

HOST=string: standard make variable for cross-compile Must be set correctly together with CROSS_TARGET

Example:

make HOST=mips64-octeon-linux-gnu CROSS_TARGET=mips64-octeon-linux-gnu-

INC_PREFIX

INC_PREFIX=string: set the base string for the include path

  • The default is $(DESTDIR)$(INSTALL_PREFIX)/include

  • Used for cross-compiling to change the location for all built-in include file searches.

  • The USER_INC parameter can be used to inject -I directives into the compiler command.

  • The INC_PREFIX and USER_INC parameters can be used together.

INSTALL_PREFIX

INSTALL_PREFIX=string: set the top install dir (after DESTDIR)

  • default for all but MacOSX: /usr

  • default for MacOSX: /usr/local

LIB_PREFIX

LIB_PREFIX=string: set the base string for the library path for linking. The default is $(INSTALL_PREFIX)/lib

  • Used for cross-compiling to change the location for all built-in library searches.

  • The USER_LIB parameter can be used to inject -L directives into the linker command.

  • The LIB_PREFIX and USER_LIB parameters can be used together.

LIB64

LIB64=1: install and look for SIL libs in /usr/lib64/yuma instead of /usr/lib/yuma (used by FC14 64 bit)

LIBSSH2_TRACE

LIBSSH2_TRACE=1: Use the debug version of the libssh2 library instead of the normal libssh2-1 library.

  • used for debugging only

  • ignored if the flag NO_LIBSSH2=1 is used

This must be built from sources and installed in /usr/local/lib (the default location).

Example build steps:

cd libssh2-1.11
cmake -DENABLE_DEBUG_LOGGING=ON -DCMAKE_BUILD_TYPE=Debug -B bld
cmake --build bld
cd bld
sudo make install

Check if the files are installed:

ls -l /usr/local/lib/libssh2*
-rw-r--r-- 1 root root 1611932 Nov 12 13:10 /usr/local/lib/libssh2.a
lrwxrwxrwx 1 root root      12 Nov 12 13:12 /usr/local/lib/libssh2.so -> libssh2.so.1
lrwxrwxrwx 1 root root      16 Nov 12 13:12 /usr/local/lib/libssh2.so.1 -> libssh2.so.1.0.1
-rw-r--r-- 1 root root  867096 Nov 12 13:10 /usr/local/lib/libssh2.so.1.0.1

The library 'libyumapro_mgr' must be built using DEBUG=1. The file netconf/src/mgr/api-session.cpp contains the SSH client code. This calls 'libssh2_trace' which causes libssh2 to generate packet traces for SSH2 packets.

MAC

MAC=1: set to compile for MacOsX

MANDIR

MANDIR=/path/to/man: set to override the default location to install man pages, which is $(PREFIX)/share/man/man.1 with default prefix is /usr/share/man/man.1

MCHECK

MCHECK=1: enables mcheck heap corruption checking

  • Used when getting heap corruption errors

  • Run mcheck(0) in the gdb debugger as needed.

MEMTRACE

MEMTRACE=1: enables mtrace debugging

  • Used when Memory leak error message printed upon exit.

  • Need to install glibc-utils for the 'mtrace' program.

  • Tools will generate an 'mtracefile' in the CWD.

  • Run mtrace /path/to/program ./mtracefile

MODULES

MODULES=1: used in debian build only to install just the YumaPro YANG Modules files for packaging

NETCONFD_LIB

NETCONFD_LIB=1: build the netconfd-pro server as a static library for uCLinux or BusyBox. The netconfd-pro code will be built as a static library instead of a stand-alone program.

  • Default target will be /usr/lib/libyumapro_netconfd-pro.a

NOFLOAT

NOFLOAT=1: disable use of double and tgmath.h; XPath eval of complex numbers will cause invalid results;

The platform.profile make rules will not set the internal 'HAS_FLOAT' C define if the 'NOFLOAT' make flag is used. The 'double' in the 'ncx_num_t' structure will use an 'int64' instead of a 'double' so the struct will be the same size.

Warning

  • This option is deprecated and MUST NOT be used. It will be removed in a future release train

  • XPath evaluations will not be correct if the 'double' data type is not available

NOTOASTER

NOTOASTER=1: disables building the example toaster SIL

NO_LIBSSH2

NO_LIBSSH2=1: removes libssh2 code from build; used for uCLinux which only supports yp-shell, not yangcli-pro This will remove NETCONF over SSH support from the mgr and ycli directories. Do not use if building yangcli-pro.

NO_LIBSSL

NO_LIBSSL=1: removes libssl code from build; used for uCLinux which only supports yp-shell, not yangcli-pro This will remove RESTCONF over SSL support from the mgr and ycli directories. Do not use if building yangcli-pro.

NO_LIBTECLA

NO_LIBTECLA=1: removes libtecla usage and linkage from from code for libyumapro_ycli. This is used when the libraries are built for the yuma-bench GUI code. Do not use unless the BUILD_LIBS_ONLY=1 flag is also used.

NO_POLL

NO_POLL=1 removes the "poll()" function usage in ncx/ses.c This is not available on Windows platforms. The ses_poll_ready function will always return FALSE if this flag is set. This only affects Client SSH processing. It has no effect on the server operation.

NO_SYSLOG

NO_SYSLOG=1: remove syslog support and includes of Linux syslog.h Windows does not have syslog so set this flag if also setting WINDOWS=1

NO_YPACK

NO_YPACK=1: do not use the YPACK macro to pack some structures This will cause more memory to be used, but may be needed if the target platform does not support it. YPACK is only used if __GNUC__ macro is set. Refer to netconf/src/platform/procdefs.h for details.

PACKAGE

PACKAGE=<pkgname>: set for Ubuntu packaging build;

  • Do not use in normal builds. Needed to pick the variant that is being installed in a dummy dir and packaged

  • This is an internal flag! Not all package variants are currently maintained or built each month!

  • Values:

    • CLIENT: used in debian build only to install just the yangcli-pro files for packaging

    • CLIENT2: used in debian build only to install just the yangcli-pro, yangdump-pro, and yangdiff-pro files for packaging

    • DOCS: used with DOC=1 debian build only to build the yumapro-docs package

    • DOCS2: used with DOC=1 debian build only to build the yumapro-client-docs package

    • COMPILER: used in debian build only to install just the yangdump-pro files for packaging

    • DEVELOPER: used in debian build only to install all of the YumaPro user binaries (including developer files)

    • SERVER: used in debian build only to install just the YumaPro Server files for packaging to run on an embedded system (NOT USED OR SUPPORTED)

    • TOOLS: used in debian build only to install all of the developer tools. Similar to DEVELOPER but does not install any server binaries.

    • USER: used in debian build only to install all of the YumaPro user binaries (no developer files) (NOT USED OR SUPPORTED)

PACKAGE_BUILD

PACKAGE_BUILD=1: set in debian and fedora packlaging scripts to indicate a packaging build is in progress.

PACKAGE_HOST_BUILD

PACKAGE_HOST_BUILD=1: set in debian and fedora packaging scripts by the host machine setting up the sources; Use with DOC=1. This sets up $HOME/Packaging/yuma_docs so the packaging builds have PDF and HTML files already made for the release

PIPE_RESTRICTED

PIPE_RESTRICTED=1: Affects yp-shell and yangcli-pro only; Causes the pipe command to be restricted to the sget, sget-config and show commands. Default is to allow pipe command on any command

PREFIX

PREFIX=string: set the top install dir (after DESTDIR) default: /usr

!!! NO LONGER SUPPORTED OR USED !!!
!!! SEE :ref:`INSTALL_PREFIX` INSTEAD !!!

PRODUCTION

PRODUCTION=1: disables the --DDEBUG flag definition in compilation so all #ifdef DEBUG code is removed

PTHREADS

PTHREADS=1: generate a threaded version of the server. Adds '-pthread' to the gcc CFLAGS and links with the pthread library (see pthread.h).

PY_SIL_VENV

PY_SIL_VENV=<path>: specify the location of the Python virtual environment.

If provided, the PY-SIL Python libraries will be installed within the virtual environment. Otherwise, it will be installed globally.

RELEASE

RELEASE=N: sets the release number in the version string.

  • Used in package builds only

  • The version in a git build will be based on the git branch name

Example: RELEASE=6 for release train 21.10 -> 21.10-6

REMOVE_SCHEMA_AUG_LEAFS

REMOVE_SCHEMA_AUG_LEAFS=1: remove the 'conformance' and 'module-type' leafs from the /netconf-state/schemas/schema list. The deprecated leafs are added if --with-yumaworks-system is true. They will be removed from the 22.10 release train when the status is changed to obsolete.

SHLIB_NCX

SHLIB_NCX=1: used in debian build only to install just the YumaPro Server libncx files for packaging This is no longer used!

STATIC

STATIC=1:set to use static libraries such as libncx.a, instead of dynamic libraries like libncx.so

STATIC_LIBSYSTEM

STATIC_LIBSYSTEM=static-libspec

The relative or absolute filespec representing the static libyp_system library. Used when STATIC_SERVER=1. Used from the netconf/src/netconfd-pro directory.

Default: ../../../libsystem/lib/libyp_system-static.a

STATIC_SERVER

STATIC_SERVER=1:set to use force the server to not use any dynamic linked SIL code. The -dl linker option will not be used and the dlopen, dlclose type of SIL invocation will not be used. The server will expect the STATIC_LIBSYSTEM library to be available when netconfd-pro is linked

STATIC_SIL

STATIC_SIL=<string> This is used to link static SIL libraries into the netconfd-pro program, using the STATIC_SERVER=1 flag and optionally the NETCONFD_LIB=1 flag. See the README-STATIC-SIL.txt file for more details

STATIC_SILSA

STATIC_SILSA=<string>

This is used to link static SIL-SA libraries into the sil-sa-app or combo-app programs. See the README-STATIC-SILSA.txt file for more details

TEST

TEST=1: make will include the 'netconf/test' directory Run this command before make test, e.g. make TEST=1; make test; sudo make install Can be run from top or netconf directory

TIMEOUT_DAYS

TIMEOUT_DAYS=N

N is a number from 1 to maxint, e.g. 100

This is an internal flag used in the packaging make procedure for programs that will expire a certain number of days after the build date.

  • Only used for the yumapro-sdk-basic and yangcli-pro packages

  • Does not affect the netconfd-pro program

  • Does affect yangcli-pro, yangdump-pro, and yangdiff-pro programs

  • A warning is printed if the expiration date is within 5 days

  • An error is printed and the program exits if the current date is past the expiration date

TIMER_MONO_CLOCK

TIMER_MONO_CLOCK=1: make will use clock_gettime() for server timers instead of time(). This also requires _POSIX_TIMERS and _POSIX_MONOTONIC_CLOCK be defined. The system clock can be changed by settimeofday() which can affect timers.

This option is enabled by EVERYTHING=1.

UCLINUX

UCLINUX=1: build a small static server for the uCLinux OS.

The netconfd-pro, netconf-subsystem-pro, and yp-shell programs are supported. No distributed services are supported such as YP-HA, DB-API, SIL-SA. No ypwatcher support.

Need to use flags: STATIC=1 STATIC_SERVER=1 NO_LIBSSH2=1 NO_LIBSSL=1 This platform is not officially supported because the dropbear SSH performance is so slow that it is operationally unusable. If dropbear performance is ever improved this may change.

USE_WERROR

USE_WERROR=1: use -Werror in the compile process

Default is not to use -Werror.

USER_SERVER_INC

USER_SERVER_INC=string: specify some include directives (-I) to be added to the make command CINC variable. The flags apply to the server only.

This parameter is obsolete. Use USER_INC instead for cross-compiling.

USER_SERVER_LIB

USER_SERVER_LIB=string: specify some include directives (-L, -l) to be added to the netconfd-pro make command LIBS variable The flags apply to the netconfd-pro program only.

This parameter is obsolete. Use USER_LIB instead for cross-compiling.

USER_INC

USER_INC=string: specify some include directives (-I) to be added to the compile command. This is used to provide include files from a different location than the makefile would normally look.

The INC_PREFIX parameter is used to change the start directory for all built-in include searches. This parameter contains a space-separated string of -I directives. Quotes are needed if any whitespace is used.

Example USER_INC="-I$HOME/xcompile/inc -I$HOME/platform/include"

USER_LIB

USER_LIB=string: specify some library search directives to be added to the link command for all executable programs. This is often used when cross-compiling and libraries are needed from multiple locations.

This parameter contains a space-separated string of -L directives. Quotes are needed if any whitespace is used.

Example USER_LIB=-L$HOME/xcompile/lib

WEB_DIR

WEB_DIR=<dirspec>: Use the specified <dirspec> as directory when installing the yang-api and/or restconf programs directly into a WEB server sub-directory (non-production build)

Default is '$(DESTDIR)/var/www/yang-api'.

WEB_GROUP

WEB_GROUP=<name>: Use the specified <name> as the group name when installing the yang-api and/or restconf programs directly into a WEB server sub-directory (non-production build)

Default is 'www-data'.

WEB_USER

WEB_USER=<name>: Use the specified <name> as the user name when installing the yang-api and/or restconf programs directly into a WEB server sub-directory (non-production build)

Default is 'www-data'.

WINDOWS

WINDOWS=1: Select code for Windows QtCreator using MinGW 8.1.0

The make files in this project are not used. Instead qmake is used to generate the makefile. This flag is experimental and only used by the YumaBench GUI to build SDK libraries on Windows 10. This flag is not supported for external use at this time.

WINDOWS_PRINTF

WINDOWS_PRINTF=1: Select Windows printf formatting for size_t parameters. This is '%zu' for most compilers. The MinGW compiler for Qt on Windows will incorrectly generate a warning about an unknown format type. Use -Wno-format to suppress this warning. Qt APIs expect the format '%zu' and the GUI crashes if '%I64u' is used instead.

Do not use. Not supported at this time.

WITH_CALLHOME

WITH_CALLHOME=1: build the IETF Call-Home reverse connection support

Default is not to add this code. Included with EVERYTHING=1. Parts of Call-home may be patented by Juniper, Inc.

WITH_CLI

WITH_CLI=1: build the netconfd-pro server with the CLI protocol included.

Default is not to add this code.

WITH_COAP

WITH_COAP=1: build the netconfd-pro server with the CoAP protocol included. Default is not to add this code

This option is obsolete. CoAP over RESTCONF is obsolete and NOT SUPPORTED. DO NOT USE!

WITH_CURL

WITH_CURL=1: build the netconfd-pro server with libcurl support included.

Default is not to add this code.

WITH_IETF_INTERFACES

WITH_IETF_INTERFACES=1: build the ietf-interfaces SIL code for the netconfd-pro server. Will also include the IF-MIB module if WITH_SNMP=1 is used as well.

Default is to build this module in package builds, but not other builds

WITH_IETF_SYSTEM

WITH_IETF_SYSTEM=1: build the ietf-system SIL code for the netconfd-pro server. Will also include the libsystem-linux library. For more details, please refer to ietf-system.yang.

Default is not to add this code.

This module is for instructional purposes only and is not supported as a production module at this time.

WITH_GDB

WITH_GDB=1: add -ggdb3 to CFALGS even if DEBUG not set

Default is not to add this flag if DEBUG=1 not set

WITH_GET2_TEST

WITH_GET2_TEST=1: build the libget2-test library enable the SIL-SA library for the get2-test module

The server must be started with --module=get2-test and the sil-sa-app must be run for the distributed operational data test to work

WITH_GET3_TEST

WITH_GET3_TEST=1: build the libget3-test library enable the SIL-SA library for the get3-test module

The server must be started with --module=get3-test and the sil-sa-app must be run for the distributed operational data test to work

WITH_GNMI

WITH_GNMI=1: build the YP-gNMI protocol

  • Must also use WITH_YCONTROL=1 and WITH_RESTCONF=1

  • Will not work unless the YP-gNMI code is present

WITH_GRPC

WITH_GRPC=1: build the netconfd-pro server with the YP-gRPC protocol included.

Default is not to add this code.

WITH_HOOKS_TEST

WITH_HOOKS_TEST=1: build the libhooks-test directory to install the SIL code for the hooks-test YANG module

Not supported if STATIC=1 is used

WITH_HOOKS_TEST_SILSA

WITH_HOOKS_TEST_SILSA=1: build the libhooks-test-silsa directory to install the SIL-SA code for the hooks-test-silsa YANG module.

The server must be started with --module=hooks-test-silsa and the sil-sa-app must be run for the distributed Hook callbacks test to work.

WITH_LIB_SHOW

WITH_LIB_SHOW=1: add the libshow directory to the build This builds the example libyp_show.so library. Normally off in regular builds and always on in package builds.

WITH_LIB_SYSTEM

WITH_LIB_SYSTEM=1: add the libsystem directory to the build This builds the example yp-system directory. Normally off in regular builds and always on in package builds.

WITH_OPENSSL

WITH_OPENSSL=1: build the netconfd-pro server with OpenSSL library support for NETCONF over TLS protocol. Default is not to add this code.

WITH_PY_SIL

WITH_PY_SIL=1: build the netconfd-pro server with PY-SIL library support. Default is not to add this code.

Note

The 'py-sil-app' program will not be usable unless

  • WITH_PY_SIL_INSTALL=1 make flag is also used

  • make install-dev is run from the py-sil source directory

Installed Programs:
  • /usr/bin/py-sil-app

Installed pyang plugin:
  • py-sil-gen.py

  • This feature is not enabled with the EVERYTHING make flag.

WITH_PY_SIL_INSTALL

WITH_PY_SIL_INSTALL=1: install the netconfd-pro server PY-SIL libraries so the 'py-sil-app' will work.

Note

Using this option will cause 'python pip' to be run as root which is not recommended. Run 'make install-dev' as a regular user instead.

Installed Python Libraries:
  • pysilcommonlibrary

  • pycontrollibrary

  • pyncxlibrary

  • pysillibrary

  • This feature is not enabled with the EVERYTHING make flag.

WITH_RESTCONF

WITH_RESTCONF=1: build the netconfd-pro server with the RESTCONF protocol included. Default is not to add this code. If set will load ietf-restconf-monitoring module and enable SIL library for this module.

WITH_SM_TEST

WITH_SM_TEST=1: build the libsm-test library enable the SIL library for the get2-test module.

The server must be started with --module=get2-test.

WITH_SCHEMA_MOUNT

WITH_SCHEMA_MOUNT=1: build the netconfd-pro server with the Schema Mount functionality included. Default is not to add this code.

WITH_SERVER_ROOT

WITH_SERVER_ROOT=1: enable the Multi-Instance Mode feature in the server. This enables the --server-root CLI parameter.

  • Flag introduced in 24.10-1

WITH_SIL_ERROR

WITH_SIL_ERROR=1: add the sil-error directory to the build This allows SIL errors to be easily generated during the specified SIL callback phase for different data node types. Used for developer testing to force corner-case transaction code to be invoked.

WITH_SNMP

WITH_SNMP=1: build the SNMP server protocol support. Requires that WITH_RESTCONF=1 also be used in the make commands.

WITH_SUPPORT_SAVE

WITH_SUPPORT_SAVE=1: build the yumawork-support-save module into the server. Used to add <get-support-save> operation does not cause any server problems.

WITH_SYSTEST_SIL

WITH_SYSTEST_SIL=1: build the test SIL libraries in the systest-sil directory. Used for regression testing to make sure code stub SIL does not cause any server problems. Ignored if PACKAGE_BUILD=1 is also used.

WITH_TEMPLATES

WITH_TEMPLATES=1: build the server code for the yumaworks-templates module, to support configuration templates.

WITH_YANG11

WITH_YANG11=1: Allow YANG 1.1 code to be enabled; Deprecated.

  • This flag MUST be set to 1 in the 16.10 release train.

  • This flag MUST NOT be set for the 14.04 or 15.10 release trains.

  • This flag is forced on starting in 16.10 and later.

WITH_YANGAPI

WITH_YANGAPI=1: build the netconfd-pro server with the YANG-API protocol included. Default is not to add this code. This protocol is obsolete and not supported.

WITH_YANG_CBOR

WITH_YANG_CBOR=1: Use the YANG over CBOR binary encoding. (Experimental) Replaces the WITH_YANG_HASH Experimental code. This flag must be enabled to support CBOR encoding of YANG data.

  • This feature is not enabled with the EVERYTHING make flag.

  • If this make flag is set then the 'ncx_sid_t' data type will be used

    • YANG_SID16: deprecated - DO NOT USE

    • YANG_SID32: used in LSID mode. This is the default if no YANG_SID flag set.

    • YANG_SID64: required in IETF SID mode.

Warning

The YumaPro software does not work with the shared library 'libcbor.so' installed with the 'libcbor-dev' package. Instead, the GitHub version of libcbor must be used and the static library built from sources.

The file /usr/share/yumapro/util/mk-cbor.sh is available to do all the steps to get, build, and install 'libcbor.a'. This must be done before the YumaPro software can be built with the WITH_YANG_CBOR=1 make flag.

WITH_YANG_HASH

WITH_YANG_HASH=1: build the libdict module and add support (REMOVED) for fast lookup via YANG Hash object dictionary (Experimental). THIS FLAG IS REMOVED. THE IETF CBOR encoding uses SID values NOT YANG-Hash. Use WITH_YANG_CBOR instead.

Obsolete and not supported.

WITH_YANG_PUSH

WITH_YANG_PUSH=1: build the YANG-PUSH functionality in the server for Push Telemetry support

WITH_YANGMAP

WITH_YANGMAP=1: build the agt_yangmap functionality for YANG model mapping feature. Used in yp-shell only.

WITH_YCONTROL

WITH_YCONTROL=1: build the netconfd-pro server with the YumaPro Control Protocol sub-system, plus ycontrol and sil-sa libraries. Used for distributed server instrumentation.

WITH_YP_HA

WITH_YP_HA=1: build the YP-HA server redundancy protocol support Requires that WITH_YCONTROL=1 also be used in the make commands.

WITH_YUMA_ARP

WITH_YUMA_ARP=1: build the libyuma-arp directory to install the SIL code for the yuma-arp YANG module.

Obsolete: do not use.

WITH_YUMA_INTERFACES

WITH_YUMA_INTERFACES=1: build the libyuma-interfaces directory to install the SIL code for the yuma-interfaces YANG module.

Obsolete: do not use.

WITH_YUMA_NACM

WITH_YUMA_NACM=1: build the agt_acm_nacm code and enable it in the agt_acm module.

This module is obsolete and not supported at all. Do not use!

WITH_YUMA_PROC

WITH_YUMA_PROC=1: build the libyuma-proc directory to install the SIL code for the yuma-proc YANG module.

WITH_ZEROMQ

WITH_ZEROMQ=1: build the yangcli-gw application. This is available starting in the 23.10T release train. Refer to the YumaPro yangcli-gw Manual for details.

XCODE

XCODE=<path>: specify the location of XCode usr/include directory Only relevant if MAC=1 also set.

Default:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/
   Developer/SDKs/MacOSX10.11.sdk/usr/include

YANG_SID16

This flag is used if the WITH_YANG_CBOR flag is set. It indicates that the SID data type is a 'uint16' number.

  • YANG_SID16 == 32K SIDs

  • DEPRECATED: DO NOT USE! NOT SUPPORTED!

YANG_SID32

This flag is used if the WITH_YANG_CBOR flag is set. It indicates that the SID data type is a 'uint32' number.

  • This is the expected mode if Localized SID Mode is used.

  • This is the default mode if no YANG_SID make flag is set.

  • YANG_SID32 == 2G SIDs (31 bits)

YANG_SID64

This flag is used if the WITH_YANG_CBOR flag is set. It indicates that the SID data type is a 'uint64' number.

  • This is the expected mode if IETF SID Mode is used.

  • YANG_SID64 == 9.2 x 10^^18 SIDs (63 bits)

YP_SYSROOT

YP_SYSROOT=<path-string> : specify the --sysroot parameter for the compiler and linker. The poath cannot have any whitespace in it.

Example:

YP_SYSROOT=/opt/SDK/sysroots/aarch64-xilinx-linux

Added to CFLAGS and CXXFLAGS:

    --sysroot=/opt/SDK/sysroots/aarch64-xilinx-linux