diff options
176 files changed, 10015 insertions, 31834 deletions
@@ -1,3 +1,73 @@ +2003-04-13 Paul Jakma <paul@dishone.st> + + * Amir: Opaque LSA bug fix for deletion of Type11's + * configure.ac: use --localstatedir for Unix sockets + * Hasso Tepper: When flushing as-ext LSAs flush associated NSSA + LSAs. + +2003-04-04 Paul Jakma <paul@dishone.st> + + * Sync to Zebra CVS + * Fix lib/thread.h leak + * Fix small Opaque LSA leak + * Do not configure OSPF interfaces for secondary addresses + * vtysh fixes from Hasso + * Dave Watson's missing ntohs fix + +2003-03-25 Paul Jakma <paul@dishone.st> + + * Sync to Zebra CVS + +2003-03-17 Amir Guindehi <amir@datacore.ch> + + * Extended SNMP checks in configure.ac so that net-snmp works + +2003-03-17 Amir Guindehi <amir@datacore.ch> + Ralph Keller <keller@tik.ee.ethz.ch> + * merge OSPF-API + +2003-02-07 Paul Jakma <paul@dishone.st> + + * Sync to zebra CVS + +2003-02-03 Paul Jakma <paul@dishone.st> + + * Sync to zebra CVS + +2003-01-19 Paul Jakma <paul@dishone.st> + + * Temporary fix for Generic PtP wrt to IPv6 + +2003-01-17 Paul Jakma <paul@dishone.st> + + * Sync up to latest zebra.org CVS + * [zebra 16823] Bugfix and new feature in Opaque-LSA handling + Masahiko Endo <endo@suri.co.jp> + * [zebra 16824] [PATCH] nsm_kill_neighbor + Masahiko Endo <endo@suri.co.jp> + * [zebra 17217] [PATCH] show thread CPU + Yon Uriarte <havanna_moon@gmx.net> + * [zebra 17218] Re: [PATCH] CLI extensions. + Yon Uriarte <havanna_moon@gmx.net> + +2002-12-13 Paul Jakma <paul@dishone.st> + + * added support for vtysh 'write file' command to + write either per-daamon and/or integrated file + * ospfd md5 buffer copying fix (Greg Troxel) + * ospfd md5 sequence number derived from time() + * RIPv1 fixes and improvements (John Hay) + * link state detection (linux) ([zebra 12269]) + * Generic PtP and RFC3021 interface addressing support + (Frank van Maarseveen) + * Michal Ludvig <michal@logix.cz>: + [zebra 16525] PATCH: Bugfixes for KAME systems + * Kevin C Miller <kevinm@andrew.cmu.edu> + [zebra 16681] OSPF NSSA Patches + * Yon Uriarte <havanna_moon@gmx.net> + [zebra 16671] [PATCH] CLI extensions + * Masahiko Endo: [zebra 15475] - MPLS-TE docs + 2002-07-07 Kunihiro Ishiguro <kunihiro@ipinfusion.com> * zebra-0.93 released. diff --git a/Makefile.am b/Makefile.am index 0c7b1fbf..6d9d864c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,10 +1,10 @@ ## Process this file with automake to produce Makefile.in. SUBDIRS = lib @ZEBRA@ @BGPD@ @RIPD@ @RIPNGD@ @OSPFD@ @OSPF6D@ \ - @VTYSH@ @OSPFCLIENT@ doc + @VTYSH@ @OSPFCLIENT@ doc DIST_SUBDIRS = lib zebra bgpd ripd ripngd ospfd ospf6d vtysh \ - ospfclient doc + ospfclient doc EXTRA_DIST = aclocal.m4 SERVICES TODO REPORTING-BUGS vtysh/Makefile.in \ vtysh/Makefile.am update-autotools doc/mpls diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index d39fb51f..00000000 --- a/Makefile.in +++ /dev/null @@ -1,460 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ -INCLUDES = @INCLUDES@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -SUBDIRS = lib @ZEBRA@ @BGPD@ @RIPD@ @RIPNGD@ @OSPFD@ @OSPF6D@ @VTYSH@ doc - -EXTRA_DIST = aclocal.m4 SERVICES TODO REPORTING-BUGS vtysh/Makefile.in \ - vtysh/Makefile.am update-autotools - -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ - uninstall-info-recursive all-recursive install-data-recursive \ - install-exec-recursive installdirs-recursive install-recursive \ - uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = README AUTHORS COPYING COPYING.LIB ChangeLog INSTALL \ - Makefile.am Makefile.in NEWS TODO aclocal.m4 config.guess \ - config.h.in config.sub configure configure.ac depcomp \ - install-sh missing mkinstalldirs -DIST_SUBDIRS = $(SUBDIRS) -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: - -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -$(ACLOCAL_M4): configure.ac - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h - -$(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - touch $(srcdir)/config.h.in - -distclean-hdr: - -rm -f config.h stamp-h1 -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = . -distdir = $(PACKAGE)-$(VERSION) - -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - -GZIP_ENV = --best -distcleancheck_listfiles = find . -type f -print - -distdir: $(DISTFILES) - $(am__remove_distdir) - mkdir $(distdir) - $(mkinstalldirs) $(distdir)/vtysh - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" \ - distdir=../$(distdir)/$$subdir \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="${top_distdir}" distdir="$(distdir)" \ - dist-hook - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - $(am__remove_distdir) - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ - && cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - find $$dc_install_base -type f -print ; \ - exit 1; } >&2 ) \ - && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ - && rm -f $(distdir).tar.gz \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @echo "$(distdir).tar.gz is ready for distribution" | \ - sed 'h;s/./=/g;p;x;p;x' -distcleancheck: distclean - if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: - -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) -distclean-am: clean-am distclean-generic distclean-hdr distclean-tags - -dvi: dvi-recursive - -dvi-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf autom4te.cache -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ - clean-generic clean-recursive dist dist-all dist-gzip distcheck \ - distclean distclean-generic distclean-hdr distclean-recursive \ - distclean-tags distcleancheck distdir dvi dvi-am dvi-recursive \ - info info-am info-recursive install install-am install-data \ - install-data-am install-data-recursive install-exec \ - install-exec-am install-exec-recursive install-info \ - install-info-am install-info-recursive install-man \ - install-recursive install-strip installcheck installcheck-am \ - installdirs installdirs-am installdirs-recursive \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-recursive tags tags-recursive uninstall \ - uninstall-am uninstall-info-am uninstall-info-recursive \ - uninstall-recursive - - -dist-hook: - mkdir $(distdir)/tools - cp -p $(srcdir)/tools/*.pl $(distdir)/tools - cp -p $(srcdir)/tools/*.el $(distdir)/tools - cp -p $(srcdir)/tools/*.cgi $(distdir)/tools - mkdir $(distdir)/init - mkdir $(distdir)/init/redhat - cp -p $(srcdir)/init/redhat/*.init $(distdir)/init/redhat - cp -p $(srcdir)/init/redhat/zebra.* $(distdir)/init/redhat -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index d78e9d03..00000000 --- a/aclocal.m4 +++ /dev/null @@ -1,836 +0,0 @@ -# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- - -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 8 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -AC_PREREQ([2.52]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl - AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_][CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_][CC], - defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_][CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_][CXX], - defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - -# Copyright 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.6.3])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# -*- Autoconf -*- - - -# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_AUX_DIR_EXPAND - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -# Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50]) - -AC_DEFUN([AM_AUX_DIR_EXPAND], [ -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# serial 4 -*- Autoconf -*- - -# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && - grep conftest.h conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[rm -f .deps 2>/dev/null -mkdir .deps 2>/dev/null -if test -d .deps; then - DEPDIR=.deps -else - # MS-DOS does not allow filenames that begin with a dot. - DEPDIR=_deps -fi -rmdir .deps 2>/dev/null -AC_SUBST([DEPDIR]) -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -doit: - @echo done -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST(am__include) -AC_SUBST(am__quote) -AC_MSG_RESULT($_am_result) -rm -f confinc confmf -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 5 - -AC_PREREQ(2.52) - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional \"$1\" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_PREREQ([2.52]) - -# serial 6 - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. We must strip everything past the first ":", -# and everything past the last "/". - -# _AM_DIRNAME(PATH) -# ----------------- -# Like AS_DIRNAME, only do it during macro expansion -AC_DEFUN([_AM_DIRNAME], - [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, - m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, - m4_if(regexp([$1], [^/.*]), -1, - [.], - patsubst([$1], [^\(/\).*], [\1])), - patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), - patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl -])# _AM_DIRNAME - - -# The stamp files are numbered to have different names. -# We could number them on a directory basis, but that's additional -# complications, let's have a unique counter. -m4_define([_AM_STAMP_Count], [0]) - - -# _AM_STAMP(HEADER) -# ----------------- -# The name of the stamp file for HEADER. -AC_DEFUN([_AM_STAMP], -[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl -AS_ESCAPE(_AM_DIRNAME(patsubst([$1], - [:.*])))/stamp-h[]_AM_STAMP_Count]) - - -# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) -# ------------------------------------------------------------ -# We used to try to get a real timestamp in stamp-h. But the fear is that -# that will cause unnecessary cvs conflicts. -AC_DEFUN([_AM_CONFIG_HEADER], -[# Add the stamp file to the list of files AC keeps track of, -# along with our hook. -AC_CONFIG_HEADERS([$1], - [# update the timestamp -echo 'timestamp for $1' >"_AM_STAMP([$1])" -$2], - [$3]) -])# _AM_CONFIG_HEADER - - -# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) -# -------------------------------------------------------------- -AC_DEFUN([AM_CONFIG_HEADER], -[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) -])# AM_CONFIG_HEADER - diff --git a/bgpd/.cvsignore b/bgpd/.cvsignore index 8edffb6e..838b5a47 100644 --- a/bgpd/.cvsignore +++ b/bgpd/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o bgpd bgp_btoa diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 39e6185e..9a201ed4 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,8 @@ +2003-04-19 Hasso Tepper <hasso@estpak.ee> + + * rip_routemap.c: sync daemon's route-map commands to have same + syntax + 2003-01-09 Akihiro Mizutani <mizutani@net-chef.net> * bgp_routemap.c: Add match extcommunity command. diff --git a/bgpd/Makefile.am b/bgpd/Makefile.am index 0e549cc0..7f739f6e 100644 --- a/bgpd/Makefile.am +++ b/bgpd/Makefile.am @@ -24,7 +24,7 @@ noinst_HEADERS = \ bgpd_SOURCES = \ bgp_main.c $(libbgp_a_SOURCES) -bgpd_LDADD = ../lib/libzebra.a @LIBCAP@ +bgpd_LDADD = ../lib/libzebra.a sysconf_DATA = bgpd.conf.sample bgpd.conf.sample2 diff --git a/bgpd/Makefile.in b/bgpd/Makefile.in deleted file mode 100644 index f6cceec4..00000000 --- a/bgpd/Makefile.in +++ /dev/null @@ -1,463 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -INSTALL_SDATA = @INSTALL@ -m 600 - -noinst_LIBRARIES = libbgp.a -sbin_PROGRAMS = bgpd - -libbgp_a_SOURCES = \ - bgpd.c bgp_fsm.c bgp_aspath.c bgp_community.c bgp_attr.c \ - bgp_debug.c bgp_route.c bgp_zebra.c bgp_open.c bgp_routemap.c \ - bgp_packet.c bgp_network.c bgp_filter.c bgp_regex.c bgp_clist.c \ - bgp_dump.c bgp_snmp.c bgp_ecommunity.c bgp_mplsvpn.c bgp_nexthop.c \ - bgp_damp.c bgp_table.c bgp_advertise.c bgp_vty.c - - -noinst_HEADERS = \ - bgp_aspath.h bgp_attr.h bgp_community.h bgp_debug.h bgp_fsm.h \ - bgp_network.h bgp_open.h bgp_packet.h bgp_regex.h bgp_route.h \ - bgpd.h bgp_filter.h bgp_clist.h bgp_dump.h bgp_zebra.h \ - bgp_ecommunity.h bgp_mplsvpn.h bgp_nexthop.h bgp_damp.h bgp_table.h \ - bgp_advertise.h bgp_snmp.h bgp_vty.h - - -bgpd_SOURCES = \ - bgp_main.c $(libbgp_a_SOURCES) - - -bgpd_LDADD = ../lib/libzebra.a - -sysconf_DATA = bgpd.conf.sample bgpd.conf.sample2 - -EXTRA_DIST = $(sysconf_DATA) BGP4-MIB.txt -subdir = bgpd -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libbgp_a_AR = $(AR) cru -libbgp_a_LIBADD = -am_libbgp_a_OBJECTS = bgpd.$(OBJEXT) bgp_fsm.$(OBJEXT) \ - bgp_aspath.$(OBJEXT) bgp_community.$(OBJEXT) bgp_attr.$(OBJEXT) \ - bgp_debug.$(OBJEXT) bgp_route.$(OBJEXT) bgp_zebra.$(OBJEXT) \ - bgp_open.$(OBJEXT) bgp_routemap.$(OBJEXT) bgp_packet.$(OBJEXT) \ - bgp_network.$(OBJEXT) bgp_filter.$(OBJEXT) bgp_regex.$(OBJEXT) \ - bgp_clist.$(OBJEXT) bgp_dump.$(OBJEXT) bgp_snmp.$(OBJEXT) \ - bgp_ecommunity.$(OBJEXT) bgp_mplsvpn.$(OBJEXT) \ - bgp_nexthop.$(OBJEXT) bgp_damp.$(OBJEXT) bgp_table.$(OBJEXT) \ - bgp_advertise.$(OBJEXT) bgp_vty.$(OBJEXT) -libbgp_a_OBJECTS = $(am_libbgp_a_OBJECTS) -sbin_PROGRAMS = bgpd$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am__objects_1 = bgpd.$(OBJEXT) bgp_fsm.$(OBJEXT) bgp_aspath.$(OBJEXT) \ - bgp_community.$(OBJEXT) bgp_attr.$(OBJEXT) bgp_debug.$(OBJEXT) \ - bgp_route.$(OBJEXT) bgp_zebra.$(OBJEXT) bgp_open.$(OBJEXT) \ - bgp_routemap.$(OBJEXT) bgp_packet.$(OBJEXT) \ - bgp_network.$(OBJEXT) bgp_filter.$(OBJEXT) bgp_regex.$(OBJEXT) \ - bgp_clist.$(OBJEXT) bgp_dump.$(OBJEXT) bgp_snmp.$(OBJEXT) \ - bgp_ecommunity.$(OBJEXT) bgp_mplsvpn.$(OBJEXT) \ - bgp_nexthop.$(OBJEXT) bgp_damp.$(OBJEXT) bgp_table.$(OBJEXT) \ - bgp_advertise.$(OBJEXT) bgp_vty.$(OBJEXT) -am_bgpd_OBJECTS = bgp_main.$(OBJEXT) $(am__objects_1) -bgpd_OBJECTS = $(am_bgpd_OBJECTS) -bgpd_DEPENDENCIES = ../lib/libzebra.a -bgpd_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bgp_advertise.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_aspath.Po ./$(DEPDIR)/bgp_attr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_clist.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_community.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_damp.Po ./$(DEPDIR)/bgp_debug.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_dump.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_ecommunity.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_filter.Po ./$(DEPDIR)/bgp_fsm.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_main.Po ./$(DEPDIR)/bgp_mplsvpn.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_network.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_nexthop.Po ./$(DEPDIR)/bgp_open.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_packet.Po ./$(DEPDIR)/bgp_regex.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_route.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_routemap.Po ./$(DEPDIR)/bgp_snmp.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_table.Po ./$(DEPDIR)/bgp_vty.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/bgp_zebra.Po ./$(DEPDIR)/bgpd.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libbgp_a_SOURCES) $(bgpd_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(libbgp_a_SOURCES) $(bgpd_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign bgpd/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libbgp.a: $(libbgp_a_OBJECTS) $(libbgp_a_DEPENDENCIES) - -rm -f libbgp.a - $(libbgp_a_AR) libbgp.a $(libbgp_a_OBJECTS) $(libbgp_a_LIBADD) - $(RANLIB) libbgp.a -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -bgpd$(EXEEXT): $(bgpd_OBJECTS) $(bgpd_DEPENDENCIES) - @rm -f bgpd$(EXEEXT) - $(LINK) $(bgpd_LDFLAGS) $(bgpd_OBJECTS) $(bgpd_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_advertise.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_aspath.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_attr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_clist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_community.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_damp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_debug.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_ecommunity.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_filter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_fsm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_mplsvpn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_network.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_nexthop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_open.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_packet.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_regex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_route.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_snmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_vty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_zebra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgpd.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES clean-sbinPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES clean-sbinPROGRAMS distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-sbinPROGRAMS install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am uninstall-sbinPROGRAMS uninstall-sysconfDATA - - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/bgpd/bgp_advertise.h b/bgpd/bgp_advertise.h index 798cf0fd..e2ae0104 100644 --- a/bgpd/bgp_advertise.h +++ b/bgpd/bgp_advertise.h @@ -99,6 +99,39 @@ struct bgp_synchronize struct bgp_advertise_fifo withdraw_low; }; +/* FIFO -- first in first out structure and macros. */ +struct fifo +{ + struct fifo *next; + struct fifo *prev; +}; + +#define FIFO_INIT(F) \ + do { \ + struct fifo *Xfifo = (struct fifo *)(F); \ + Xfifo->next = Xfifo->prev = Xfifo; \ + } while (0) + +#define FIFO_ADD(F,N) \ + do { \ + struct fifo *Xfifo = (struct fifo *)(F); \ + struct fifo *Xnode = (struct fifo *)(N); \ + Xnode->next = Xfifo; \ + Xnode->prev = Xfifo->prev; \ + Xfifo->prev = Xfifo->prev->next = Xnode; \ + } while (0) + +#define FIFO_DEL(N) \ + do { \ + struct fifo *Xnode = (struct fifo *)(N); \ + Xnode->prev->next = Xnode->next; \ + Xnode->next->prev = Xnode->prev; \ + } while (0) + +#define FIFO_HEAD(F) \ + ((((struct fifo *)(F))->next == (struct fifo *)(F)) \ + ? NULL : (F)->next) + /* BGP adjacency linked list. */ #define BGP_INFO_ADD(N,A,TYPE) \ do { \ diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c index fc5efb19..d30ef4cc 100644 --- a/bgpd/bgp_aspath.c +++ b/bgpd/bgp_aspath.c @@ -1170,7 +1170,7 @@ aspath_show_all_iterator (struct hash_backet *backet, struct vty *vty) as = (struct aspath *) backet->data; - vty_out (vty, "[%p:%d] (%ld) ", backet, backet->key, as->refcnt); + vty_out (vty, "[%p:%u] (%ld) ", backet, backet->key, as->refcnt); vty_out (vty, "%s%s", as->str, VTY_NEWLINE); } diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c index 2e03f48d..0b6a2e8c 100644 --- a/bgpd/bgp_clist.c +++ b/bgpd/bgp_clist.c @@ -269,7 +269,7 @@ community_list_delete (struct community_list *list) community_list_free (list); } -int +int community_list_empty_p (struct community_list *list) { return (list->head == NULL && list->tail == NULL) ? 1 : 0; @@ -364,26 +364,6 @@ community_regexp_match (struct community *com, regex_t *reg) return 0; } -static int -ecommunity_regexp_match (struct ecommunity *ecom, regex_t *reg) -{ - char *str; - - /* When there is no communities attribute it is treated as empty - string. */ - if (ecom == NULL || ecom->size == 0) - str = ""; - else - str = ecommunity_str (ecom); - - /* Regular expression match. */ - if (regexec (reg, str, 0, NULL, 0) == 0) - return 1; - - /* No match. */ - return 0; -} - /* Delete community attribute using regular expression match. Return modified communites attribute. */ static struct community * @@ -461,30 +441,6 @@ community_list_match (struct community *com, struct community_list *list) return 0; } -int -ecommunity_list_match (struct ecommunity *ecom, struct community_list *list) -{ - struct community_entry *entry; - - for (entry = list->head; entry; entry = entry->next) - { - if (entry->any) - return entry->direct == COMMUNITY_PERMIT ? 1 : 0; - - if (entry->style == EXTCOMMUNITY_LIST_STANDARD) - { - if (ecommunity_match (ecom, entry->u.ecom)) - return entry->direct == COMMUNITY_PERMIT ? 1 : 0; - } - else if (entry->style == EXTCOMMUNITY_LIST_EXPANDED) - { - if (ecommunity_regexp_match (ecom, entry->reg)) - return entry->direct == COMMUNITY_PERMIT ? 1 : 0; - } - } - return 0; -} - /* Perform exact matching. In case of expanded community-list, do same thing as community_list_match(). */ int @@ -514,7 +470,7 @@ community_list_exact_match (struct community *com, struct community_list *list) return 0; } -/* Delete all permitted communities in the list from com. */ +/* Delete all permitted communities in the list from com1 */ struct community * community_list_match_delete (struct community *com, struct community_list *list) diff --git a/bgpd/bgp_clist.h b/bgpd/bgp_clist.h index 50b43ab4..ffc707c2 100644 --- a/bgpd/bgp_clist.h +++ b/bgpd/bgp_clist.h @@ -137,7 +137,6 @@ struct community_list * community_list_lookup (struct community_list_handler *, char *, int); int community_list_match (struct community *, struct community_list *); -int ecommunity_list_match (struct ecommunity *, struct community_list *); int community_list_exact_match (struct community *, struct community_list *); struct community * community_list_match_delete (struct community *, diff --git a/bgpd/bgp_dump.c b/bgpd/bgp_dump.c index fca51edc..8ee367be 100644 --- a/bgpd/bgp_dump.c +++ b/bgpd/bgp_dump.c @@ -130,8 +130,13 @@ bgp_dump_interval_add (struct bgp_dump *bgp_dump, int interval) { int bgp_dump_interval_func (struct thread *); - bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, - bgp_dump, interval); + if (interval > 0 ) + bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, + bgp_dump, interval); + else + bgp_dump->t_interval = thread_add_event (master, bgp_dump_interval_func, + bgp_dump, 0); + return 0; } @@ -296,7 +301,6 @@ int bgp_dump_interval_func (struct thread *t) { struct bgp_dump *bgp_dump; - bgp_dump = THREAD_ARG (t); bgp_dump->t_interval = NULL; @@ -310,8 +314,11 @@ bgp_dump_interval_func (struct thread *t) bgp_dump_routes_func (AFI_IP6); } - bgp_dump_interval_add (bgp_dump, bgp_dump->interval); - + /* if interval is set reschedule */ + if (bgp_dump->interval > 0) + bgp_dump_interval_add (bgp_dump, bgp_dump->interval); + + return 0; } @@ -475,10 +482,11 @@ int bgp_dump_set (struct vty *vty, struct bgp_dump *bgp_dump, int type, char *path, char *interval_str) { + unsigned int interval; + if (interval_str) { - unsigned int interval; - + /* Check interval string. */ interval = bgp_dump_parse_time (interval_str); if (interval == 0) @@ -491,10 +499,15 @@ bgp_dump_set (struct vty *vty, struct bgp_dump *bgp_dump, int type, if (bgp_dump->interval_str) free (bgp_dump->interval_str); bgp_dump->interval_str = strdup (interval_str); - - /* Create interval thread. */ - bgp_dump_interval_add (bgp_dump, interval); + } + else + { + interval = 0; + } + + /* Create interval thread. */ + bgp_dump_interval_add (bgp_dump, interval); /* Set type. */ bgp_dump->type = type; diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c index aa0f1176..2f9cc945 100644 --- a/bgpd/bgp_ecommunity.c +++ b/bgpd/bgp_ecommunity.c @@ -158,15 +158,6 @@ ecommunity_dup (struct ecommunity *ecom) return new; } -/* Retrun string representation of communities attribute. */ -char * -ecommunity_str (struct ecommunity *ecom) -{ - if (! ecom->str) - ecom->str = ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY); - return ecom->str; -} - /* Merge two Extended Communities Attribute structure. */ struct ecommunity * ecommunity_merge (struct ecommunity *ecom1, struct ecommunity *ecom2) @@ -648,33 +639,3 @@ ecommunity_ecom2str (struct ecommunity *ecom, int format) } return str_buf; } - -int -ecommunity_match (struct ecommunity *ecom1, struct ecommunity *ecom2) -{ - int i = 0; - int j = 0; - - if (ecom1 == NULL && ecom2 == NULL) - return 1; - - if (ecom1 == NULL || ecom2 == NULL) - return 0; - - if (ecom1->size < ecom2->size) - return 0; - - /* Every community on com2 needs to be on com1 for this to match */ - while (i < ecom1->size && j < ecom2->size) - { - if (memcmp (ecom1->val + i, ecom2->val + j, ECOMMUNITY_SIZE) == 0) - j++; - i++; - } - - if (j == ecom2->size) - return 1; - else - return 0; -} - diff --git a/bgpd/bgp_ecommunity.h b/bgpd/bgp_ecommunity.h index 7bc59a69..678d1308 100644 --- a/bgpd/bgp_ecommunity.h +++ b/bgpd/bgp_ecommunity.h @@ -70,5 +70,3 @@ void ecommunity_unintern (struct ecommunity *); unsigned int ecommunity_hash_make (struct ecommunity *); struct ecommunity *ecommunity_str2com (char *, int, int); char *ecommunity_ecom2str (struct ecommunity *, int); -int ecommunity_match (struct ecommunity *, struct ecommunity *); -char *ecommunity_str (struct ecommunity *); diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c index 3e1d80f6..70377914 100644 --- a/bgpd/bgp_main.c +++ b/bgpd/bgp_main.c @@ -29,7 +29,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "memory.h" #include "prefix.h" #include "log.h" -#include "privs.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_attr.h" @@ -46,7 +45,6 @@ struct option longopts[] = { "vty_port", required_argument, NULL, 'P'}, { "retain", no_argument, NULL, 'r'}, { "no_kernel", no_argument, NULL, 'n'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { "help", no_argument, NULL, 'h'}, { 0 } @@ -72,23 +70,6 @@ char *pid_file = PATH_BGPD_PID; int vty_port = BGP_VTY_PORT; char *vty_addr = NULL; -/* privileges */ -zebra_capabilities_t _caps_p [] = -{ - ZCAP_BIND, -}; - -struct zebra_privs_t bgpd_privs = -{ -#if defined(ZEBRA_USER) && defined(ZEBRA_GROUP) - .user = ZEBRA_USER, - .group = ZEBRA_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]), - .cap_num_i = 0, -}; - /* Help information display. */ static void usage (char *progname, int status) @@ -108,7 +89,6 @@ redistribution between different routing protocols.\n\n\ -P, --vty_port Set vty's port number\n\ -r, --retain When program terminates, retain added route by bgpd.\n\ -n, --no_kernel Do not install route to kernel.\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -217,7 +197,7 @@ main (int argc, char **argv) /* Command line argument treatment. */ while (1) { - opt = getopt_long (argc, argv, "df:hp:A:P:rnu:v", longopts, 0); + opt = getopt_long (argc, argv, "df:hp:A:P:rnv", longopts, 0); if (opt == EOF) break; @@ -258,9 +238,6 @@ main (int argc, char **argv) case 'n': bgp_option_set (BGP_OPT_NO_FIB); break; - case 'u': - bgpd_privs.user = bgpd_privs.group = optarg; - break; case 'v': print_version (progname); exit (0); @@ -280,7 +257,6 @@ main (int argc, char **argv) /* Initializations. */ srand (time (NULL)); signal_init (); - zprivs_init (&bgpd_privs); cmd_init (1); vty_init (); memory_init (); diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 019b78b7..40e9cdb3 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -27,16 +27,12 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "if.h" #include "prefix.h" #include "command.h" -#include "privs.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_fsm.h" #include "bgpd/bgp_attr.h" #include "bgpd/bgp_debug.h" #include "bgpd/bgp_network.h" - -extern struct zebra_privs_t bgpd_privs; - /* Accept bgp connection. */ static int @@ -157,16 +153,9 @@ bgp_bind_address (int sock, struct in_addr *addr) #endif /* HAVE_SIN_LEN */ memcpy (&local.sin_addr, addr, sizeof (struct in_addr)); - if ( bgpd_privs.change (ZPRIVS_RAISE) ) - zlog_err ("bgp_bind_address: could not raise privs"); - ret = bind (sock, (struct sockaddr *)&local, sizeof (struct sockaddr_in)); if (ret < 0) ; - - if (bgpd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("bgp_bind_address: could not lower privs"); - return 0; } @@ -317,9 +306,6 @@ bgp_socket (struct bgp *bgp, unsigned short port) sockopt_reuseaddr (sock); sockopt_reuseport (sock); - - if (bgpd_privs.change (ZPRIVS_RAISE) ) - zlog_err ("bgp_socket: could not raise privs"); ret = bind (sock, ainfo->ai_addr, ainfo->ai_addrlen); if (ret < 0) @@ -328,10 +314,6 @@ bgp_socket (struct bgp *bgp, unsigned short port) close (sock); continue; } - - if (bgpd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("bgp_bind_address: could not lower privs"); - ret = listen (sock, 3); if (ret < 0) { @@ -377,9 +359,6 @@ bgp_socket (struct bgp *bgp, unsigned short port) sin.sin_len = socklen; #endif /* HAVE_SIN_LEN */ - if ( bgpd_privs.change (ZPRIVS_RAISE) ) - zlog_err ("bgp_socket: could not raise privs"); - ret = bind (sock, (struct sockaddr *) &sin, socklen); if (ret < 0) { @@ -387,10 +366,6 @@ bgp_socket (struct bgp *bgp, unsigned short port) close (sock); return ret; } - - if (bgpd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("bgp_socket: could not lower privs"); - ret = listen (sock, 3); if (ret < 0) { diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index 3b91373b..77b024e5 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -663,7 +663,7 @@ bgp_connected_add (struct connected *ifc) p.family = AF_INET; p.prefixlen = addr->prefixlen; - if (if_is_pointopoint (ifp)) + if (ifc_pointopoint (ifc)) p.u.prefix4 = dest->u.prefix4; else p.u.prefix4 = addr->u.prefix4; @@ -694,7 +694,7 @@ bgp_connected_add (struct connected *ifc) p.family = AF_INET6; p.prefixlen = addr->prefixlen; - if (if_is_pointopoint (ifp)) + if (ifc_pointopoint (ifc)) p.u.prefix6 = dest->u.prefix6; else p.u.prefix6 = addr->u.prefix6; @@ -748,7 +748,7 @@ bgp_connected_delete (struct connected *ifc) p.family = AF_INET; p.prefixlen = addr->prefixlen; - if (if_is_pointopoint (ifp)) + if (ifc_pointopoint (ifc)) p.u.prefix4 = dest->u.prefix4; else p.u.prefix4 = addr->u.prefix4; @@ -779,7 +779,7 @@ bgp_connected_delete (struct connected *ifc) p.family = AF_INET6; p.prefixlen = addr->prefixlen; - if (if_is_pointopoint (ifp)) + if (ifc_pointopoint (ifc)) p.u.prefix6 = dest->u.prefix6; else p.u.prefix6 = addr->u.prefix6; diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index e33137bc..48879f35 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -238,6 +238,7 @@ bgp_update_packet (struct peer *peer, afi_t afi, safi_t safi) bgp_packet_set_size (s); packet = bgp_packet_dup (s); bgp_packet_add (peer, packet); + BGP_WRITE_ON (peer->t_write, bgp_write, peer->fd); stream_reset (s); return packet; } diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index aab85eb3..87d305cb 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -620,10 +620,7 @@ bgp_announce_check (struct bgp_info *ri, struct peer *peer, struct prefix *p, if (transparent || reflect || (CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_NEXTHOP_UNCHANGED) && ((p->family == AF_INET && attr->nexthop.s_addr) -#ifdef HAVE_IPV6 - || (p->family == AF_INET6 && ri->peer != bgp->peer_self) -#endif /* HAVE_IPV6 */ - ))) + || (p->family == AF_INET6 && ri->peer != bgp->peer_self)))) { /* NEXT-HOP Unchanged. */ } @@ -1780,7 +1777,6 @@ bgp_static_update (struct bgp *bgp, struct prefix *p, struct bgp_info *new; struct bgp_info info; struct attr attr; - struct attr attr_tmp; struct attr *attr_new; int ret; @@ -1797,26 +1793,23 @@ bgp_static_update (struct bgp *bgp, struct prefix *p, /* Apply route-map. */ if (bgp_static->rmap.name) { - attr_tmp = attr; info.peer = bgp->peer_self; - info.attr = &attr_tmp; + info.attr = &attr; ret = route_map_apply (bgp_static->rmap.map, p, RMAP_BGP, &info); - if (ret == RMAP_DENYMATCH) { /* Free uninterned attribute. */ - bgp_attr_flush (&attr_tmp); + bgp_attr_flush (&attr); /* Unintern original. */ aspath_unintern (attr.aspath); bgp_static_withdraw (bgp, p, afi, safi); return; } - attr_new = bgp_attr_intern (&attr_tmp); } - else - attr_new = bgp_attr_intern (&attr); + + attr_new = bgp_attr_intern (&attr); for (ri = rn->info; ri; ri = ri->next) if (ri->peer == bgp->peer_self && ri->type == ZEBRA_ROUTE_BGP @@ -2866,7 +2859,7 @@ bgp_aggregate_increment (struct bgp *bgp, struct prefix *p, if ((aggregate = rn->info) != NULL && rn->p.prefixlen < p->prefixlen) { bgp_aggregate_delete (bgp, &rn->p, afi, safi, aggregate); - bgp_aggregate_route (bgp, &rn->p, ri, afi, safi, NULL, aggregate); + bgp_aggregate_route (bgp, &rn->p, ri, safi, safi, NULL, aggregate); } bgp_unlock_node (child); } @@ -2893,7 +2886,7 @@ bgp_aggregate_decrement (struct bgp *bgp, struct prefix *p, if ((aggregate = rn->info) != NULL && rn->p.prefixlen < p->prefixlen) { bgp_aggregate_delete (bgp, &rn->p, afi, safi, aggregate); - bgp_aggregate_route (bgp, &rn->p, NULL, afi, safi, del, aggregate); + bgp_aggregate_route (bgp, &rn->p, NULL, safi, safi, del, aggregate); } bgp_unlock_node (child); } diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index b5494d52..5cfb5c8c 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -2413,15 +2413,21 @@ ALIAS (no_set_ip_nexthop, DEFUN (set_metric, set_metric_cmd, - "set metric (<0-4294967295>|<+/-metric>)", + "set metric <0-4294967295>", SET_STR "Metric value for destination routing protocol\n" - "Metric value\n" - "Add or subtract metric\n") + "Metric value\n") { return bgp_route_set_add (vty, vty->index, "metric", argv[0]); } +ALIAS (set_metric, + set_metric_addsub_cmd, + "set metric <+/-metric>", + SET_STR + "Metric value for destination routing protocol\n" + "Add or subtract BGP metric\n") + DEFUN (no_set_metric, no_set_metric_cmd, "no set metric", @@ -3232,6 +3238,7 @@ bgp_route_map_init () install_element (RMAP_NODE, &no_set_weight_cmd); install_element (RMAP_NODE, &no_set_weight_val_cmd); install_element (RMAP_NODE, &set_metric_cmd); + install_element (RMAP_NODE, &set_metric_addsub_cmd); install_element (RMAP_NODE, &no_set_metric_cmd); install_element (RMAP_NODE, &no_set_metric_val_cmd); install_element (RMAP_NODE, &set_aspath_prepend_cmd); diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c index 6a33bae6..598fc3cd 100644 --- a/bgpd/bgp_snmp.c +++ b/bgpd/bgp_snmp.c @@ -21,6 +21,9 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include <zebra.h> #ifdef HAVE_SNMP +#ifdef HAVE_NETSNMP +#include <net-snmp/net-snmp-config.h> +#endif #include <asn1.h> #include <snmp.h> #include <snmp_impl.h> diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 3e5cdd2a..aef888be 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -208,7 +208,7 @@ bgp_interface_address_add (int command, struct zclient *zclient, bgp_if_update (ifc->ifp); - if (if_is_up (ifc->ifp)) + if (if_is_operative (ifc->ifp)) bgp_connected_add (ifc); return 0; @@ -227,7 +227,7 @@ bgp_interface_address_delete (int command, struct zclient *zclient, bgp_if_update (ifc->ifp); - if (if_is_up (ifc->ifp)) + if (if_is_operative (ifc->ifp)) bgp_connected_delete (ifc); connected_free (ifc); diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index bd00c965..f116a0cf 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -797,13 +797,6 @@ peer_as_change (struct peer *peer, as_t as) type = peer_sort (peer); peer->as = as; - if (bgp_config_check (peer->bgp, BGP_CONFIG_CONFEDERATION) - && ! bgp_confederation_peers_check (peer->bgp, as) - && peer->bgp->as != as) - peer->local_as = peer->bgp->confed_id; - else - peer->local_as = peer->bgp->as; - /* Advertisement-interval reset */ if (peer_sort (peer) == BGP_PEER_IBGP) peer->v_routeadv = BGP_DEFAULT_IBGP_ROUTEADV; @@ -1641,15 +1634,6 @@ bgp_create (as_t *as, char *name) return bgp; } -/* Return master of BGP. */ -struct bgp_master * -bgp_get_master () -{ - if (bm) - return bm; - return NULL; -} - /* Return first entry of BGP. */ struct bgp * bgp_get_default () diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index c9a263bd..933516d0 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -611,7 +611,6 @@ struct bgp_nlri /* Default configuration settings for bgpd. */ #define BGP_VTY_PORT 2605 -#define BGP_VTYSH_PATH "/tmp/.bgpd" #define BGP_DEFAULT_CONFIG "bgpd.conf" /* Check AS path loop when we send NLRI. */ diff --git a/config.h.in b/config.h.in deleted file mode 100644 index da6f5300..00000000 --- a/config.h.in +++ /dev/null @@ -1,339 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* BSDI */ -#undef BSDI_NRL - -/* Disable BGP installation to zebra */ -#undef DISABLE_BGP_ANNOUNCE - -/* FreeBSD 3.2 */ -#undef FREEBSD_32 - -/* GNU Linux */ -#undef GNU_LINUX - -/* Define to 1 if you have the <asm/types.h> header file. */ -#undef HAVE_ASM_TYPES_H - -/* Define to 1 if you have the `bcopy' function. */ -#undef HAVE_BCOPY - -/* Broken Alias */ -#undef HAVE_BROKEN_ALIASES - -/* Define to 1 if you have the `bzero' function. */ -#undef HAVE_BZERO - -/* Define to 1 if you have the `daemon' function. */ -#undef HAVE_DAEMON - -/* Define to 1 if you have the `getaddrinfo' function. */ -#undef HAVE_GETADDRINFO - -/* Define to 1 if you have the `getifaddrs' function. */ -#undef HAVE_GETIFADDRS - -/* GNU regexp library */ -#undef HAVE_GNU_REGEX - -/* ifaliasreq */ -#undef HAVE_IFALIASREQ - -/* Define to 1 if you have the `if_indextoname' function. */ -#undef HAVE_IF_INDEXTONAME - -/* Define to 1 if you have the `if_nametoindex' function. */ -#undef HAVE_IF_NAMETOINDEX - -/* in6_aliasreq */ -#undef HAVE_IN6_ALIASREQ - -/* Define to 1 if you have the `inet_aton' function. */ -#undef HAVE_INET_ATON - -/* Define to 1 if you have the <inet/nd.h> header file. */ -#undef HAVE_INET_ND_H - -/* inet_ntop */ -#undef HAVE_INET_NTOP - -/* inet_pton */ -#undef HAVE_INET_PTON - -/* in_pktinfo */ -#undef HAVE_INPKTINFO - -/* Define to 1 if you have the <inttypes.h> header file. */ -#undef HAVE_INTTYPES_H - -/* IPv6 */ -#undef HAVE_IPV6 - -/* Define to 1 if you have the <kvm.h> header file. */ -#undef HAVE_KVM_H - -/* Define to 1 if you have the `crypt' library (-lcrypt). */ -#undef HAVE_LIBCRYPT - -/* Define to 1 if you have the `kvm' library (-lkvm). */ -#undef HAVE_LIBKVM - -/* Define to 1 if you have the `m' library (-lm). */ -#undef HAVE_LIBM - -/* Define to 1 if you have the `ncurses' library (-lncurses). */ -#undef HAVE_LIBNCURSES - -/* Define to 1 if you have the `nsl' library (-lnsl). */ -#undef HAVE_LIBNSL - -/* Define to 1 if you have the `readline' library (-lreadline). */ -#undef HAVE_LIBREADLINE - -/* Define to 1 if you have the `resolv' library (-lresolv). */ -#undef HAVE_LIBRESOLV - -/* Define to 1 if you have the `socket' library (-lsocket). */ -#undef HAVE_LIBSOCKET - -/* Define to 1 if you have the `tinfo' library (-ltinfo). */ -#undef HAVE_LIBTINFO - -/* Define to 1 if you have the <libutil.h> header file. */ -#undef HAVE_LIBUTIL_H - -/* Define to 1 if you have the `xnet' library (-lxnet). */ -#undef HAVE_LIBXNET - -/* Define to 1 if you have the <linux/version.h> header file. */ -#undef HAVE_LINUX_VERSION_H - -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the <netdb.h> header file. */ -#undef HAVE_NETDB_H - -/* Define to 1 if you have the <netinet6/nd6.h> header file. */ -#undef HAVE_NETINET6_ND6_H - -/* Define to 1 if you have the <netinet/icmp6.h> header file. */ -#undef HAVE_NETINET_ICMP6_H - -/* Define to 1 if you have the <netinet/in6.h> header file. */ -#undef HAVE_NETINET_IN6_H - -/* Define to 1 if you have the <netinet/in6_var.h> header file. */ -#undef HAVE_NETINET_IN6_VAR_H - -/* Define to 1 if you have the <netinet/in.h> header file. */ -#undef HAVE_NETINET_IN_H - -/* Define to 1 if you have the <netinet/in_var.h> header file. */ -#undef HAVE_NETINET_IN_VAR_H - -/* netlink */ -#undef HAVE_NETLINK - -/* Define to 1 if you have the <net/if_dl.h> header file. */ -#undef HAVE_NET_IF_DL_H - -/* Define to 1 if you have the <net/if_var.h> header file. */ -#undef HAVE_NET_IF_VAR_H - -/* Define to 1 if you have the <net/netopt.h> header file. */ -#undef HAVE_NET_NETOPT_H - -/* NET_RT_IFLIST */ -#undef HAVE_NET_RT_IFLIST - -/* OSPF NSSA */ -#undef HAVE_NSSA - -/* OSPF Opaque LSA */ -#undef HAVE_OPAQUE_LSA - -/* OSPF TE */ -#undef HAVE_OSPF_TE - -/* /proc/net/dev */ -#undef HAVE_PROC_NET_DEV - -/* /proc/net/if_inet6 */ -#undef HAVE_PROC_NET_IF_INET6 - -/* rt_addrinfo */ -#undef HAVE_RT_ADDRINFO - -/* rusage */ -#undef HAVE_RUSAGE - -/* sa_len */ -#undef HAVE_SA_LEN - -/* Define to 1 if you have the `setproctitle' function. */ -#undef HAVE_SETPROCTITLE - -/* scope id */ -#undef HAVE_SIN6_SCOPE_ID - -/* sin_len */ -#undef HAVE_SIN_LEN - -/* SNMP */ -#undef HAVE_SNMP - -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* sockaddr_dl */ -#undef HAVE_SOCKADDR_DL - -/* socklen_t */ -#undef HAVE_SOCKLEN_T - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the <stdlib.h> header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strerror' function. */ -#undef HAVE_STRERROR - -/* Define to 1 if you have the <strings.h> header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the <string.h> header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strlcat' function. */ -#undef HAVE_STRLCAT - -/* Define to 1 if you have the `strlcpy' function. */ -#undef HAVE_STRLCPY - -/* Define to 1 if you have the <stropts.h> header file. */ -#undef HAVE_STROPTS_H - -/* sun_len */ -#undef HAVE_SUN_LEN - -/* Define to 1 if you have the <sys/conf.h> header file. */ -#undef HAVE_SYS_CONF_H - -/* Define to 1 if you have the <sys/ksym.h> header file. */ -#undef HAVE_SYS_KSYM_H - -/* Define to 1 if you have the <sys/select.h> header file. */ -#undef HAVE_SYS_SELECT_H - -/* Define to 1 if you have the <sys/sockio.h> header file. */ -#undef HAVE_SYS_SOCKIO_H - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the <sys/sysctl.h> header file. */ -#undef HAVE_SYS_SYSCTL_H - -/* Define to 1 if you have the <sys/times.h> header file. */ -#undef HAVE_SYS_TIMES_H - -/* Define to 1 if you have the <sys/time.h> header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the <sys/types.h> header file. */ -#undef HAVE_SYS_TYPES_H - -/* Use TCP for zebra communication */ -#undef HAVE_TCP_ZEBRA - -/* Define to 1 if you have the <unistd.h> header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `vsnprintf' function. */ -#undef HAVE_VSNPRINTF - -/* Inria IPv6 */ -#undef INRIA_IPV6 - -/* KAME IPv6 */ -#undef KAME - -/* Linux IPv6 */ -#undef LINUX_IPV6 - -/* NRL */ -#undef NRL - -/* OpenBSD */ -#undef OPEN_BSD - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* bgpd PID */ -#undef PATH_BGPD_PID - -/* ospf6d PID */ -#undef PATH_OSPF6D_PID - -/* ospfd PID */ -#undef PATH_OSPFD_PID - -/* ripd PID */ -#undef PATH_RIPD_PID - -/* ripngd PID */ -#undef PATH_RIPNGD_PID - -/* zebra PID */ -#undef PATH_ZEBRA_PID - -/* Define as the return type of signal handlers (`int' or `void'). */ -#undef RETSIGTYPE - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* SunOS 5 */ -#undef SUNOS_5 - -/* Use PAM for authentication */ -#undef USE_PAM - -/* Version number of package */ -#undef VERSION - -/* VTY shell */ -#undef VTYSH - -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN - -/* Define to 1 if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const diff --git a/configure b/configure deleted file mode 100755 index 9b60c8f4..00000000 --- a/configure +++ /dev/null @@ -1,8472 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="lib/zebra.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#if HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#if HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# if HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#if HAVE_STRINGS_H -# include <strings.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif -#endif -#if HAVE_UNISTD_H -# include <unistd.h> -#endif" - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors - --enable-vtysh, Make integrated VTY version of zebra - --disable-ipv6 turn off IPv6 related features and daemons - --disable-zebra do not build zebra daemon - --disable-bgpd do not build bgpd - --disable-ripd do not build ripd - --disable-ripngd do not build ripngd - --disable-ospfd do not build ospfd - --disable-ospf6d do not build ospf6d - --disable-bgp-announce, turn off BGP route announcement - --enable-netlink force to use Linux netlink interface - --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X - --enable-snmp enable SNMP support - --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon - --enable-nssa enable OSPF NSSA option - --enable-opaque-lsa enable OSPF Opaque-LSA support (RFC2370) - --enable-ospf-te enable Traffic Engineering Extension to OSPF - --enable-multipath=ARG enable multipath function, ARG must be digit - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-cflags Set CFLAGS for use in compilation. - --with-libpam use libpam for PAM support in vtysh - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.53. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell meta-characters. -ac_configure_args= -ac_sep= -for ac_arg -do - case $ac_arg in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n ) continue ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core core.* *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - -am__api_version="1.6" -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="${MAKE}"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - # test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# Define the identity of the package. - PACKAGE=zebra - VERSION=0.94 - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. - - - -# Add the stamp file to the list of files AC keeps track of, -# along with our hook. -ac_config_headers="$ac_config_headers config.h" - - - - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - - -# Check whether --with-cflags or --without-cflags was given. -if test "${with_cflags+set}" = set; then - withval="$with_cflags" - -fi; -if test "x$with_cflags" != "x" ; then - CFLAGS="$with_cflags" ; cflags_specified=yes ; -elif test -n "$CFLAGS" ; then - cflags_specified=yes ; -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$as_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 -echo "$as_me: error: C compiler cannot create executables" >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include <stdlib.h>' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <stdlib.h> -$ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -rm -f .deps 2>/dev/null -mkdir .deps 2>/dev/null -if test -d .deps; then - DEPDIR=.deps -else - # MS-DOS does not allow filenames that begin with a dot. - DEPDIR=_deps -fi -rmdir .deps 2>/dev/null - - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -doit: - @echo done -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - echo '#include "conftest.h"' > conftest.c - echo 'int i;' > conftest.h - echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=conftest.c object=conftest.o \ - depfile=conftest.Po tmpdepfile=conftest.TPo \ - $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && - grep conftest.h conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if test "x$cflags_specified" = "x" ; then - CFLAGS="$CFLAGS -Wall" -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <assert.h> - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <assert.h> - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="${MAKE}"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - - -echo "$as_me:$LINENO: checking for AIX" >&5 -echo $ECHO_N "checking for AIX... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#ifdef _AIX - yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -cat >>confdefs.h <<\_ACEOF -#define _ALL_SOURCE 1 -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - - -# Check whether --enable-vtysh or --disable-vtysh was given. -if test "${enable_vtysh+set}" = set; then - enableval="$enable_vtysh" - -fi; -# Check whether --enable-ipv6 or --disable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then - enableval="$enable_ipv6" - -fi; -# Check whether --enable-zebra or --disable-zebra was given. -if test "${enable_zebra+set}" = set; then - enableval="$enable_zebra" - -fi; -# Check whether --enable-bgpd or --disable-bgpd was given. -if test "${enable_bgpd+set}" = set; then - enableval="$enable_bgpd" - -fi; -# Check whether --enable-ripd or --disable-ripd was given. -if test "${enable_ripd+set}" = set; then - enableval="$enable_ripd" - -fi; -# Check whether --enable-ripngd or --disable-ripngd was given. -if test "${enable_ripngd+set}" = set; then - enableval="$enable_ripngd" - -fi; -# Check whether --enable-ospfd or --disable-ospfd was given. -if test "${enable_ospfd+set}" = set; then - enableval="$enable_ospfd" - -fi; -# Check whether --enable-ospf6d or --disable-ospf6d was given. -if test "${enable_ospf6d+set}" = set; then - enableval="$enable_ospf6d" - -fi; -# Check whether --enable-bgp-announce or --disable-bgp-announce was given. -if test "${enable_bgp_announce+set}" = set; then - enableval="$enable_bgp_announce" - -fi; -# Check whether --enable-netlink or --disable-netlink was given. -if test "${enable_netlink+set}" = set; then - enableval="$enable_netlink" - -fi; -# Check whether --enable-broken-aliases or --disable-broken-aliases was given. -if test "${enable_broken_aliases+set}" = set; then - enableval="$enable_broken_aliases" - -fi; -# Check whether --enable-snmp or --disable-snmp was given. -if test "${enable_snmp+set}" = set; then - enableval="$enable_snmp" - -fi; - -# Check whether --with-libpam or --without-libpam was given. -if test "${with_libpam+set}" = set; then - withval="$with_libpam" - -fi; -# Check whether --enable-tcpsock or --disable-tcpsock was given. -if test "${enable_tcpsock+set}" = set; then - enableval="$enable_tcpsock" - -fi; -# Check whether --enable-nssa or --disable-nssa was given. -if test "${enable_nssa+set}" = set; then - enableval="$enable_nssa" - -fi; -# Check whether --enable-opaque-lsa or --disable-opaque-lsa was given. -if test "${enable_opaque_lsa+set}" = set; then - enableval="$enable_opaque_lsa" - -fi; -# Check whether --enable-ospf-te or --disable-ospf-te was given. -if test "${enable_ospf_te+set}" = set; then - enableval="$enable_ospf_te" - -fi; -# Check whether --enable-multipath or --disable-multipath was given. -if test "${enable_multipath+set}" = set; then - enableval="$enable_multipath" - -fi; - - -if test "${enable_broken_aliases}" = "yes"; then - if test "${enable_netlink}" = "yes" - then - echo "Sorry, you can't use netlink with broken aliases" - exit 1 - fi - -cat >>confdefs.h <<\_ACEOF -#define HAVE_BROKEN_ALIASES -_ACEOF - - enable_netlink=no -fi - -if test "${enable_tcp_zebra}" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_TCP_ZEBRA -_ACEOF - -fi - -if test "${enable_nssa}" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_NSSA -_ACEOF - -fi - -if test "${enable_opaque_lsa}" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_OPAQUE_LSA -_ACEOF - -fi - -if test "${enable_ospf_te}" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_OPAQUE_LSA -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_OSPF_TE -_ACEOF - -fi - - - -MULTIPATH_NUM=1 - -case "${enable_multipath}" in - [0-9]|[1-9][0-9]) - MULTIPATH_NUM="${enable_multipath}" - ;; - "") - ;; - *) - echo "Please specify digit to --enable-multipath ARG." - exit 1 - ;; -esac - - - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <ctype.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - - - - - - - - - - - - - - -for ac_header in string.h stropts.h sys/conf.h sys/ksym.h sys/time.h sys/times.h sys/select.h sys/sysctl.h sys/sockio.h sys/types.h net/if_dl.h net/if_var.h linux/version.h kvm.h netdb.h netinet/in.h net/netopt.h netinet/in_var.h netinet/in6_var.h netinet/in6.h inet/nd.h asm/types.h netinet/icmp6.h netinet6/nd6.h libutil.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset x; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <signal.h> -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - -case "$host" in - *-sunos5.6* | *-solaris2.6*) - opsys=sol2-6 - -cat >>confdefs.h <<\_ACEOF -#define SUNOS_5 -_ACEOF - - -echo "$as_me:$LINENO: checking for main in -lxnet" >&5 -echo $ECHO_N "checking for main in -lxnet... $ECHO_C" >&6 -if test "${ac_cv_lib_xnet_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lxnet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_xnet_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_xnet_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_xnet_main" >&5 -echo "${ECHO_T}$ac_cv_lib_xnet_main" >&6 -if test $ac_cv_lib_xnet_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBXNET 1 -_ACEOF - - LIBS="-lxnet $LIBS" - -fi - - CURSES=-lcurses - ;; - *-sunos5* | *-solaris2*) - -cat >>confdefs.h <<\_ACEOF -#define SUNOS_5 -_ACEOF - - -echo "$as_me:$LINENO: checking for main in -lsocket" >&5 -echo $ECHO_N "checking for main in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_socket_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_main" >&6 -if test $ac_cv_lib_socket_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSOCKET 1 -_ACEOF - - LIBS="-lsocket $LIBS" - -fi - - -echo "$as_me:$LINENO: checking for main in -lnsl" >&5 -echo $ECHO_N "checking for main in -lnsl... $ECHO_C" >&6 -if test "${ac_cv_lib_nsl_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_nsl_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_nsl_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_main" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_main" >&6 -if test $ac_cv_lib_nsl_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBNSL 1 -_ACEOF - - LIBS="-lnsl $LIBS" - -fi - - CURSES=-lcurses - ;; - *-linux-*) - opsys=gnu-linux - -cat >>confdefs.h <<\_ACEOF -#define GNU_LINUX -_ACEOF - - ;; - *-nec-sysv4*) - -echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_nsl_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_nsl_gethostbyname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 -if test $ac_cv_lib_nsl_gethostbyname = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBNSL 1 -_ACEOF - - LIBS="-lnsl $LIBS" - -fi - - -echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 -echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_socket+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char socket (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_socket=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_socket_socket=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 -if test $ac_cv_lib_socket_socket = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSOCKET 1 -_ACEOF - - LIBS="-lsocket $LIBS" - -fi - - ;; - *-freebsd3.2) - -cat >>confdefs.h <<\_ACEOF -#define FREEBSD_32 -_ACEOF - - ;; - *-openbsd*) - opsys=openbsd - -cat >>confdefs.h <<\_ACEOF -#define OPEN_BSD -_ACEOF - - ;; - *-bsdi*) - opsys=bsdi - OTHER_METHOD="mtu_kvm.o" - -echo "$as_me:$LINENO: checking for main in -lkvm" >&5 -echo $ECHO_N "checking for main in -lkvm... $ECHO_C" >&6 -if test "${ac_cv_lib_kvm_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkvm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_kvm_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_kvm_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_main" >&5 -echo "${ECHO_T}$ac_cv_lib_kvm_main" >&6 -if test $ac_cv_lib_kvm_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBKVM 1 -_ACEOF - - LIBS="-lkvm $LIBS" - -fi - - ;; -esac - -case "${enable_vtysh}" in - "yes") VTYSH="vtysh"; - -cat >>confdefs.h <<\_ACEOF -#define VTYSH -_ACEOF - - -echo "$as_me:$LINENO: checking for tputs in -ltinfo" >&5 -echo $ECHO_N "checking for tputs in -ltinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_tinfo_tputs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char tputs (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -tputs (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_tinfo_tputs=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_tinfo_tputs=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tputs" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tputs" >&6 -if test $ac_cv_lib_tinfo_tputs = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBTINFO 1 -_ACEOF - - LIBS="-ltinfo $LIBS" - -else - -echo "$as_me:$LINENO: checking for tputs in -lncurses" >&5 -echo $ECHO_N "checking for tputs in -lncurses... $ECHO_C" >&6 -if test "${ac_cv_lib_ncurses_tputs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lncurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char tputs (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -tputs (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ncurses_tputs=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_ncurses_tputs=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tputs" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tputs" >&6 -if test $ac_cv_lib_ncurses_tputs = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBNCURSES 1 -_ACEOF - - LIBS="-lncurses $LIBS" - -fi - -fi - - -echo "$as_me:$LINENO: checking for main in -lreadline" >&5 -echo $ECHO_N "checking for main in -lreadline... $ECHO_C" >&6 -if test "${ac_cv_lib_readline_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_readline_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_readline_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_readline_main" >&5 -echo "${ECHO_T}$ac_cv_lib_readline_main" >&6 -if test $ac_cv_lib_readline_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBREADLINE 1 -_ACEOF - - LIBS="-lreadline $LIBS" - -fi - - if test $ac_cv_lib_readline_main = no; then - { { echo "$as_me:$LINENO: error: vtysh needs libreadline but was not found on your system." >&5 -echo "$as_me: error: vtysh needs libreadline but was not found on your system." >&2;} - { (exit 1); exit 1; }; } - fi - if test "${ac_cv_header_readline_history_h+set}" = set; then - echo "$as_me:$LINENO: checking for readline/history.h" >&5 -echo $ECHO_N "checking for readline/history.h... $ECHO_C" >&6 -if test "${ac_cv_header_readline_history_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_readline_history_h" >&5 -echo "${ECHO_T}$ac_cv_header_readline_history_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking readline/history.h usability" >&5 -echo $ECHO_N "checking readline/history.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#include <readline/history.h> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking readline/history.h presence" >&5 -echo $ECHO_N "checking readline/history.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <readline/history.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: readline/history.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: readline/history.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: readline/history.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: readline/history.h: proceeding with the preprocessor's result" >&2;};; - no:yes ) - { echo "$as_me:$LINENO: WARNING: readline/history.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: readline/history.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: readline/history.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: readline/history.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: readline/history.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: readline/history.h: proceeding with the preprocessor's result" >&2;};; -esac -echo "$as_me:$LINENO: checking for readline/history.h" >&5 -echo $ECHO_N "checking for readline/history.h... $ECHO_C" >&6 -if test "${ac_cv_header_readline_history_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_readline_history_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_readline_history_h" >&5 -echo "${ECHO_T}$ac_cv_header_readline_history_h" >&6 - -fi - - - if test $ac_cv_header_readline_history_h = no;then - { { echo "$as_me:$LINENO: error: readline is too old to have readline/history.h, please update to the latest readline library." >&5 -echo "$as_me: error: readline is too old to have readline/history.h, please update to the latest readline library." >&2;} - { (exit 1); exit 1; }; } - fi - ;; - "no" ) VTYSH="";; - * ) ;; -esac - -if test "$with_libpam" = "yes"; then -echo "$as_me:$LINENO: checking for pam_start in -lpam" >&5 -echo $ECHO_N "checking for pam_start in -lpam... $ECHO_C" >&6 -if test "${ac_cv_lib_pam_pam_start+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pam_start (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -pam_start (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pam_pam_start=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_pam_pam_start=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pam_pam_start" >&5 -echo "${ECHO_T}$ac_cv_lib_pam_pam_start" >&6 -if test $ac_cv_lib_pam_pam_start = yes; then - echo "$as_me:$LINENO: checking for misc_conv in -lpam" >&5 -echo $ECHO_N "checking for misc_conv in -lpam... $ECHO_C" >&6 -if test "${ac_cv_lib_pam_misc_conv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char misc_conv (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -misc_conv (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pam_misc_conv=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_pam_misc_conv=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pam_misc_conv" >&5 -echo "${ECHO_T}$ac_cv_lib_pam_misc_conv" >&6 -if test $ac_cv_lib_pam_misc_conv = yes; then - -cat >>confdefs.h <<\_ACEOF -#define USE_PAM -_ACEOF - - LIBPAM="-lpam" -else - -cat >>confdefs.h <<\_ACEOF -#define USE_PAM -_ACEOF - - LIBPAM="-lpam -lpam_misc" - -fi - - -else - echo "$as_me:$LINENO: checking for pam_end in -lpam" >&5 -echo $ECHO_N "checking for pam_end in -lpam... $ECHO_C" >&6 -if test "${ac_cv_lib_pam_pam_end+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam -ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pam_end (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -pam_end (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pam_pam_end=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_pam_pam_end=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pam_pam_end" >&5 -echo "${ECHO_T}$ac_cv_lib_pam_pam_end" >&6 -if test $ac_cv_lib_pam_pam_end = yes; then - echo "$as_me:$LINENO: checking for misc_conv in -lpam" >&5 -echo $ECHO_N "checking for misc_conv in -lpam... $ECHO_C" >&6 -if test "${ac_cv_lib_pam_misc_conv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char misc_conv (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -misc_conv (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pam_misc_conv=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_pam_misc_conv=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pam_misc_conv" >&5 -echo "${ECHO_T}$ac_cv_lib_pam_misc_conv" >&6 -if test $ac_cv_lib_pam_misc_conv = yes; then - cat >>confdefs.h <<\_ACEOF -#define USE_PAM 1 -_ACEOF - - LIBPAM="-lpam -ldl" -else - cat >>confdefs.h <<\_ACEOF -#define USE_PAM 1 -_ACEOF - - LIBPAM="-lpam -ldl -lpam_misc" - -fi - - -else - { echo "$as_me:$LINENO: WARNING: *** pam support will not be built ***" >&5 -echo "$as_me: WARNING: *** pam support will not be built ***" >&2;} -fi - - - -fi - -fi - - -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/param.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/param.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_bigendian=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianess by grep'ing values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if fgrep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if fgrep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi -fi -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_c_bigendian=yes -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) - -cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianess -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianess -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac - - - - - - - - - - - - - - - -for ac_func in bcopy bzero strerror inet_aton daemon snprintf vsnprintf strlcat strlcpy if_nametoindex if_indextoname getifaddrs -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -for ac_func in setproctitle -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - echo "$as_me:$LINENO: checking for setproctitle in -lutil" >&5 -echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 -if test "${ac_cv_lib_util_setproctitle+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char setproctitle (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -setproctitle (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_util_setproctitle=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_util_setproctitle=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_util_setproctitle" >&5 -echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 -if test $ac_cv_lib_util_setproctitle = yes; then - LIBS="$LIBS -lutil"; cat >>confdefs.h <<\_ACEOF -#define HAVE_SETPROCTITLE 1 -_ACEOF - -fi - -fi -done - - -echo "$as_me:$LINENO: checking zebra between kernel interface method" >&5 -echo $ECHO_N "checking zebra between kernel interface method... $ECHO_C" >&6 -if test x"$opsys" = x"gnu-linux"; then - if test "${enable_netlink}" = "yes";then - echo "$as_me:$LINENO: result: netlink" >&5 -echo "${ECHO_T}netlink" >&6 - RT_METHOD=rt_netlink.o - -cat >>confdefs.h <<\_ACEOF -#define HAVE_NETLINK -_ACEOF - - netlink=yes - elif test "${enable_netlink}" = "no"; then - echo "$as_me:$LINENO: result: ioctl" >&5 -echo "${ECHO_T}ioctl" >&6 - RT_METHOD=rt_ioctl.o - netlink=no - else - echo "$as_me:$LINENO: result: netlink" >&5 -echo "${ECHO_T}netlink" >&6 - RT_METHOD=rt_netlink.o - -cat >>confdefs.h <<\_ACEOF -#define HAVE_NETLINK -_ACEOF - - netlink=yes - fi -else - if test "$opsys" = "sol2-6";then - echo "$as_me:$LINENO: result: solaris" >&5 -echo "${ECHO_T}solaris" >&6 - KERNEL_METHOD="kernel_socket.o" - RT_METHOD="rt_socket.o" - else - if test "$cross_compiling" = yes; then - KERNEL_METHOD=kernel_socket.o - RT_METHOD=rt_socket.o - echo "$as_me:$LINENO: result: socket" >&5 -echo "${ECHO_T}socket" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <errno.h> -#include <sys/types.h> -#include <sys/socket.h> - -main () -{ - int ac_sock; - - ac_sock = socket (AF_ROUTE, SOCK_RAW, 0); - if (ac_sock < 0 && errno == EINVAL) - exit (1); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - KERNEL_METHOD=kernel_socket.o - RT_METHOD=rt_socket.o - echo "$as_me:$LINENO: result: socket" >&5 -echo "${ECHO_T}socket" >&6 -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -( exit $ac_status ) -RT_METHOD=rt_ioctl.o - echo "$as_me:$LINENO: result: ioctl" >&5 -echo "${ECHO_T}ioctl" >&6 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - fi -fi - - - - -echo "$as_me:$LINENO: checking route read method check" >&5 -echo $ECHO_N "checking route read method check... $ECHO_C" >&6 -if test "${zebra_rtread+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$netlink" = yes; then - RTREAD_METHOD="rtread_netlink.o" - zebra_rtread="netlink" -else -for zebra_rtread in /proc/net/route /dev/ip /dev/null; -do - test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break -done -case $zebra_rtread in - "/proc/net/route") RTREAD_METHOD="rtread_proc.o" - zebra_rtread="proc";; - "/dev/ip") RTREAD_METHOD="rtread_getmsg.o" - zebra_rtread="getmsg";; - *) RTREAD_METHOD="rtread_sysctl.o" - zebra_rtread="sysctl";; -esac -fi -fi -echo "$as_me:$LINENO: result: $zebra_rtread" >&5 -echo "${ECHO_T}$zebra_rtread" >&6 - - -echo "$as_me:$LINENO: checking interface looking up method" >&5 -echo $ECHO_N "checking interface looking up method... $ECHO_C" >&6 -if test "$netlink" = yes; then - echo "$as_me:$LINENO: result: netlink" >&5 -echo "${ECHO_T}netlink" >&6 - IF_METHOD=if_netlink.o -else - if test "$opsys" = "sol2-6";then - echo "$as_me:$LINENO: result: solaris" >&5 -echo "${ECHO_T}solaris" >&6 - IF_METHOD=if_ioctl.o - elif test "$opsys" = "openbsd";then - echo "$as_me:$LINENO: result: openbsd" >&5 -echo "${ECHO_T}openbsd" >&6 - IF_METHOD=if_ioctl.o - elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: sysctl" >&5 -echo "${ECHO_T}sysctl" >&6 - IF_METHOD=if_sysctl.o - -cat >>confdefs.h <<\_ACEOF -#define HAVE_NET_RT_IFLIST -_ACEOF - - else - echo "$as_me:$LINENO: result: ioctl" >&5 -echo "${ECHO_T}ioctl" >&6 - IF_METHOD=if_ioctl.o - fi -fi - - -if test -r /proc/net/dev; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_PROC_NET_DEV -_ACEOF - - IF_PROC=if_proc.o -fi - -if test -r /proc/net/if_inet6; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_PROC_NET_IF_INET6 -_ACEOF - - IF_PROC=if_proc.o -fi - - -echo "$as_me:$LINENO: checking ipforward method check" >&5 -echo $ECHO_N "checking ipforward method check... $ECHO_C" >&6 -if test "${zebra_ipforward_path+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null; -do - test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break -done -case $zebra_ipforward_path in - "/proc/net/snmp") IPFORWARD=ipforward_proc.o - zebra_ipforward_path="proc";; - "/dev/ip") - case "$host" in - *-nec-sysv4*) IPFORWARD=ipforward_ews.o - zebra_ipforward_path="ews";; - *) IPFORWARD=ipforward_solaris.o - zebra_ipforward_path="solaris";; - esac;; - *) IPFORWARD=ipforward_sysctl.o - zebra_ipforward_path="sysctl";; -esac -fi -echo "$as_me:$LINENO: result: $zebra_ipforward_path" >&5 -echo "${ECHO_T}$zebra_ipforward_path" >&6 - - - -for ac_func in getaddrinfo -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - have_getaddrinfo=yes -else - have_getaddrinfo=no -fi -done - - -echo "$as_me:$LINENO: checking whether does this OS have IPv6 stack" >&5 -echo $ECHO_N "checking whether does this OS have IPv6 stack... $ECHO_C" >&6 -if test "${enable_ipv6}" = "no"; then - echo "$as_me:$LINENO: result: disabled" >&5 -echo "${ECHO_T}disabled" >&6 -else -if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - -cat >>confdefs.h <<\_ACEOF -#define HAVE_IPV6 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define INRIA_IPV6 -_ACEOF - - RIPNGD="ripngd" - OSPF6D="ospf6d" - LIB_IPV6="" - echo "$as_me:$LINENO: result: INRIA IPv6" >&5 -echo "${ECHO_T}INRIA IPv6" >&6 -fi -if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - -cat >>confdefs.h <<\_ACEOF -#define HAVE_IPV6 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define KAME -_ACEOF - - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then - LIB_IPV6="-L/usr/local/v6/lib -linet6" - fi - echo "$as_me:$LINENO: result: KAME" >&5 -echo "${ECHO_T}KAME" >&6 -fi -if grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - -cat >>confdefs.h <<\_ACEOF -#define HAVE_IPV6 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define NRL -_ACEOF - - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test x"$opsys" = x"bsdi";then - -cat >>confdefs.h <<\_ACEOF -#define BSDI_NRL -_ACEOF - - echo "$as_me:$LINENO: result: BSDI_NRL" >&5 -echo "${ECHO_T}BSDI_NRL" >&6 - else - echo "$as_me:$LINENO: result: NRL" >&5 -echo "${ECHO_T}NRL" >&6 - fi -fi - -if test "${enable_ipv6}" = "yes"; then - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - #include <linux/version.h> - /* 2.1.128 or later */ - #if LINUX_VERSION_CODE >= 0x020180 - yes - #endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - zebra_cv_ipv6=yes; zebra_cv_linux_ipv6=yes;echo "$as_me:$LINENO: result: Linux IPv6" >&5 -echo "${ECHO_T}Linux IPv6" >&6 -fi -rm -f conftest* - -else - if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route" - then - zebra_cv_ipv6=yes - zebra_cv_linux_ipv6=yes - echo "$as_me:$LINENO: result: Linux IPv6" >&5 -echo "${ECHO_T}Linux IPv6" >&6 - fi -fi - -if test "$zebra_cv_linux_ipv6" = "yes";then - cat >>confdefs.h <<\_ACEOF -#define HAVE_IPV6 1 -_ACEOF - - echo "$as_me:$LINENO: checking for GNU libc 2.1" >&5 -echo $ECHO_N "checking for GNU libc 2.1... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -#include <features.h> -#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 - yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - glibc=yes; echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - -cat >>confdefs.h <<\_ACEOF -#define LINUX_IPV6 -_ACEOF - - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test "$glibc" != "yes"; then - INCLUDES="-I/usr/inet6/include" - if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then - LIB_IPV6="-L/usr/inet6/lib -linet6" - fi - fi -fi - -LIBS="$LIB_IPV6 $LIBS" - - -if test x"$RIPNGD" = x""; then - echo "$as_me:$LINENO: result: IPv4 only" >&5 -echo "${ECHO_T}IPv4 only" >&6 -fi -fi - -if test "${enable_zebra}" = "no";then - ZEBRA="" -else - ZEBRA="zebra" -fi - -if test "${enable_bgpd}" = "no";then - BGPD="" -else - BGPD="bgpd" -fi - -if test "${enable_ripd}" = "no";then - RIPD="" -else - RIPD="ripd" -fi - -if test "${enable_ospfd}" = "no";then - OSPFD="" -else - OSPFD="ospfd" -fi - -case "${enable_ripngd}" in - "yes") RIPNGD="ripngd";; - "no" ) RIPNGD="";; - * ) ;; -esac - -case "${enable_ospf6d}" in - "yes") OSPF6D="ospf6d";; - "no" ) OSPF6D="";; - * ) ;; -esac - -if test "${enable_bgp_announce}" = "no";then - -cat >>confdefs.h <<\_ACEOF -#define DISABLE_BGP_ANNOUNCE -_ACEOF - -fi - - - - - - - - - - -echo "$as_me:$LINENO: checking for inet_ntop in -lc" >&5 -echo $ECHO_N "checking for inet_ntop in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_inet_ntop+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char inet_ntop (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -inet_ntop (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_inet_ntop=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_c_inet_ntop=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_inet_ntop" >&5 -echo "${ECHO_T}$ac_cv_lib_c_inet_ntop" >&6 -if test $ac_cv_lib_c_inet_ntop = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_NTOP -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for inet_pton in -lc" >&5 -echo $ECHO_N "checking for inet_pton in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_inet_pton+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char inet_pton (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -inet_pton (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_inet_pton=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_c_inet_pton=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_inet_pton" >&5 -echo "${ECHO_T}$ac_cv_lib_c_inet_pton" >&6 -if test $ac_cv_lib_c_inet_pton = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_PTON -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 -echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 -if test "${ac_cv_lib_crypt_crypt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypt $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char crypt (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -crypt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_crypt_crypt=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_crypt_crypt=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 -echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 -if test $ac_cv_lib_crypt_crypt = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPT 1 -_ACEOF - - LIBS="-lcrypt $LIBS" - -fi - - -echo "$as_me:$LINENO: checking for res_init in -lresolv" >&5 -echo $ECHO_N "checking for res_init in -lresolv... $ECHO_C" >&6 -if test "${ac_cv_lib_resolv_res_init+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lresolv $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char res_init (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -res_init (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_resolv_res_init=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_resolv_res_init=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_init" >&5 -echo "${ECHO_T}$ac_cv_lib_resolv_res_init" >&6 -if test $ac_cv_lib_resolv_res_init = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRESOLV 1 -_ACEOF - - LIBS="-lresolv $LIBS" - -fi - - -echo "$as_me:$LINENO: checking for main in -lm" >&5 -echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6 -if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_m_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_m_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -echo "${ECHO_T}$ac_cv_lib_m_main" >&6 -if test $ac_cv_lib_m_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - -echo "$as_me:$LINENO: checking for __inet_ntop" >&5 -echo $ECHO_N "checking for __inet_ntop... $ECHO_C" >&6 -if test "${ac_cv_func___inet_ntop+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char __inet_ntop (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char __inet_ntop (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub___inet_ntop) || defined (__stub_____inet_ntop) -choke me -#else -f = __inet_ntop; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func___inet_ntop=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func___inet_ntop=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func___inet_ntop" >&5 -echo "${ECHO_T}$ac_cv_func___inet_ntop" >&6 -if test $ac_cv_func___inet_ntop = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_NTOP 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for __inet_pton" >&5 -echo $ECHO_N "checking for __inet_pton... $ECHO_C" >&6 -if test "${ac_cv_func___inet_pton+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char __inet_pton (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char __inet_pton (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub___inet_pton) || defined (__stub_____inet_pton) -choke me -#else -f = __inet_pton; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func___inet_pton=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func___inet_pton=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func___inet_pton" >&5 -echo "${ECHO_T}$ac_cv_func___inet_pton" >&6 -if test $ac_cv_func___inet_pton = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_PTON 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for __inet_aton" >&5 -echo $ECHO_N "checking for __inet_aton... $ECHO_C" >&6 -if test "${ac_cv_func___inet_aton+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char __inet_aton (); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char __inet_aton (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub___inet_aton) || defined (__stub_____inet_aton) -choke me -#else -f = __inet_aton; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func___inet_aton=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func___inet_aton=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func___inet_aton" >&5 -echo "${ECHO_T}$ac_cv_func___inet_aton" >&6 -if test $ac_cv_func___inet_aton = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_INET_ATON 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for regexec in -lc" >&5 -echo $ECHO_N "checking for regexec in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_regexec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char regexec (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -regexec (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_c_regexec=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_c_regexec=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_c_regexec" >&5 -echo "${ECHO_T}$ac_cv_lib_c_regexec" >&6 -if test $ac_cv_lib_c_regexec = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GNU_REGEX -_ACEOF - - LIB_REGEX="" -else - LIB_REGEX="regex.o" -fi - - - -if test "${enable_snmp}" = "yes";then - old_libs="${LIBS}" - LIBS="-L/usr/local/lib" - unset ac_cv_lib_snmp_asn_parse_int - echo "$as_me:$LINENO: checking for asn_parse_int in -lsnmp" >&5 -echo $ECHO_N "checking for asn_parse_int in -lsnmp... $ECHO_C" >&6 -if test "${ac_cv_lib_snmp_asn_parse_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsnmp $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char asn_parse_int (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -asn_parse_int (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_snmp_asn_parse_int=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_snmp_asn_parse_int=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_snmp_asn_parse_int" >&5 -echo "${ECHO_T}$ac_cv_lib_snmp_asn_parse_int" >&6 -if test $ac_cv_lib_snmp_asn_parse_int = yes; then - HAVE_SNMP=yes -fi - - if test "${HAVE_SNMP}" = ""; then - unset ac_cv_lib_snmp_asn_parse_int - echo "$as_me:$LINENO: checking for main in -lcrypto" >&5 -echo $ECHO_N "checking for main in -lcrypto... $ECHO_C" >&6 -if test "${ac_cv_lib_crypto_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_crypto_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_crypto_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_main" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_main" >&6 -if test $ac_cv_lib_crypto_main = yes; then - NEED_CRYPTO=yes -fi - - if test "${NEED_CRYPTO}" = ""; then - echo "$as_me:$LINENO: checking for asn_parse_int in -lsnmp" >&5 -echo $ECHO_N "checking for asn_parse_int in -lsnmp... $ECHO_C" >&6 -if test "${ac_cv_lib_snmp_asn_parse_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsnmp $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char asn_parse_int (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -asn_parse_int (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_snmp_asn_parse_int=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_snmp_asn_parse_int=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_snmp_asn_parse_int" >&5 -echo "${ECHO_T}$ac_cv_lib_snmp_asn_parse_int" >&6 -if test $ac_cv_lib_snmp_asn_parse_int = yes; then - HAVE_SNMP=yes; NEED_CRYPTO=yes -fi - - else - echo "$as_me:$LINENO: checking for asn_parse_int in -lsnmp" >&5 -echo $ECHO_N "checking for asn_parse_int in -lsnmp... $ECHO_C" >&6 -if test "${ac_cv_lib_snmp_asn_parse_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsnmp "-lcrypto" $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char asn_parse_int (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -asn_parse_int (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_snmp_asn_parse_int=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_snmp_asn_parse_int=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_snmp_asn_parse_int" >&5 -echo "${ECHO_T}$ac_cv_lib_snmp_asn_parse_int" >&6 -if test $ac_cv_lib_snmp_asn_parse_int = yes; then - HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" -fi - - fi - fi - LIBS="${old_libs}" - - if test "${HAVE_SNMP}" = ""; then - old_libs="${LIBS}" - LIBS="-L/usr/local/lib" - echo "$as_me:$LINENO: checking for asn_parse_int in -lsnmp" >&5 -echo $ECHO_N "checking for asn_parse_int in -lsnmp... $ECHO_C" >&6 -if test "${ac_cv_lib_snmp_asn_parse_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsnmp $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char asn_parse_int (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -asn_parse_int (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_snmp_asn_parse_int=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_snmp_asn_parse_int=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_snmp_asn_parse_int" >&5 -echo "${ECHO_T}$ac_cv_lib_snmp_asn_parse_int" >&6 -if test $ac_cv_lib_snmp_asn_parse_int = yes; then - HAVE_SNMP=yes -fi - - LIBS="${old_libs}" - fi - if test "${HAVE_SNMP}" = "yes"; then - for ac_snmp in /usr/include/ucd-snmp/asn1.h /usr/local/include/ucd-snmp/asn1.h /dev/null - do - test -f "${ac_snmp}" && break - done - case ${ac_snmp} in - /usr/include/ucd-snmp/*) - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SNMP -_ACEOF - - CFLAGS="${CFLAGS} -I/usr/include/ucd-snmp" - LIBS="${LIBS} -lsnmp" - ;; - /usr/local/include/ucd-snmp/*) - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SNMP -_ACEOF - - CFLAGS="${CFLAGS} -I/usr/local/include/ucd-snmp" - LIBS="${LIBS} -L/usr/local/lib -lsnmp" - ;; - esac - if test "${NEED_CRYPTO}" = "yes"; then - LIBS="${LIBS} -lcrypto" - fi - fi -fi - -echo "$as_me:$LINENO: checking whether struct sockaddr has a sa_len field" >&5 -echo $ECHO_N "checking whether struct sockaddr has a sa_len field... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/socket.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SA_LEN -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -echo "$as_me:$LINENO: checking whether struct sockaddr_in has a sin_len field" >&5 -echo $ECHO_N "checking whether struct sockaddr_in has a sin_len field... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <netinet/in.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SIN_LEN -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -echo "$as_me:$LINENO: checking whether struct sockaddr_un has a sun_len field" >&5 -echo $ECHO_N "checking whether struct sockaddr_un has a sun_len field... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/un.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SUN_LEN -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -if test "$zebra_cv_ipv6" = yes; then - echo "$as_me:$LINENO: checking whether struct sockaddr_in6 has a sin6_scope_id field" >&5 -echo $ECHO_N "checking whether struct sockaddr_in6 has a sin6_scope_id field... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <netinet/in.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SIN6_SCOPE_ID -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - -echo "$as_me:$LINENO: checking whther socklen_t is defined" >&5 -echo $ECHO_N "checking whther socklen_t is defined... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -socklen_t ac_x; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKLEN_T -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -echo "$as_me:$LINENO: checking whether struct sockaddr_dl exist" >&5 -echo $ECHO_N "checking whether struct sockaddr_dl exist... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <net/if_dl.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "sockaddr_dl" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_DL -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - -echo "$as_me:$LINENO: checking whether struct ifaliasreq exist" >&5 -echo $ECHO_N "checking whether struct ifaliasreq exist... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <net/if.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "ifaliasreq" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_IFALIASREQ -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - -echo "$as_me:$LINENO: checking whether struct if6_aliasreq exist" >&5 -echo $ECHO_N "checking whether struct if6_aliasreq exist... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <netinet6/in6_var.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "in6_aliasreq" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_IN6_ALIASREQ -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - -echo "$as_me:$LINENO: checking whether struct rt_addrinfo exist" >&5 -echo $ECHO_N "checking whether struct rt_addrinfo exist... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <net/route.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "rt_addrinfo" >/dev/null 2>&1; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_RT_ADDRINFO -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest* - - -echo "$as_me:$LINENO: checking whether struct in_pktinfo exist" >&5 -echo $ECHO_N "checking whether struct in_pktinfo exist... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <netinet/in.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -struct in_pktinfo ac_x; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INPKTINFO -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -echo "$as_me:$LINENO: checking whether getrusage is available" >&5 -echo $ECHO_N "checking whether getrusage is available... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include <sys/resource.h> - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define HAVE_RUSAGE -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -file="${srcdir}/lib/version.h" -VERSION=`sed -ne 's/^#.*ZEBRA_VERSION.*\"\([^\"]*\)\"$/\1/p' $file` - - -echo "$as_me:$LINENO: checking pid file directory" >&5 -echo $ECHO_N "checking pid file directory... $ECHO_C" >&6 -if test "${ac_piddir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - for ZEBRA_PID_DIR in /var/run /var/adm /etc /dev/null; -do - test -d $ZEBRA_PID_DIR && break -done -ac_piddir=$ZEBRA_PID_DIR -if test $ZEBRA_PID_DIR = "/dev/null"; then - echo "PID DIRECTORY NOT FOUND!" -fi -fi -echo "$as_me:$LINENO: result: $ac_piddir" >&5 -echo "${ECHO_T}$ac_piddir" >&6 - -cat >>confdefs.h <<_ACEOF -#define PATH_ZEBRA_PID "$ac_piddir/zebra.pid" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PATH_RIPD_PID "$ac_piddir/ripd.pid" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PATH_RIPNGD_PID "$ac_piddir/ripngd.pid" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PATH_BGPD_PID "$ac_piddir/bgpd.pid" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PATH_OSPFD_PID "$ac_piddir/ospfd.pid" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PATH_OSPF6D_PID "$ac_piddir/ospf6d.pid" -_ACEOF - - - -echo "$as_me:$LINENO: checking for working htonl" >&5 -echo $ECHO_N "checking for working htonl... $ECHO_C" >&6 -if test "${ac_cv_htonl_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_NETDB_H -#include <netdb.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -htonl (0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_htonl_works=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_htonl_works=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -echo "$as_me:$LINENO: result: $ac_cv_htonl_works" >&5 -echo "${ECHO_T}$ac_cv_htonl_works" >&6 - -ac_config_files="$ac_config_files Makefile lib/Makefile zebra/Makefile ripd/Makefile ripngd/Makefile bgpd/Makefile ospfd/Makefile ospf6d/Makefile vtysh/Makefile doc/Makefile" -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# NLS nuisances. -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } - - -# Name of the executable. -as_me=`(basename "$0") 2>/dev/null || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conftest.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.53. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.53, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" - exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "zebra/Makefile" ) CONFIG_FILES="$CONFIG_FILES zebra/Makefile" ;; - "ripd/Makefile" ) CONFIG_FILES="$CONFIG_FILES ripd/Makefile" ;; - "ripngd/Makefile" ) CONFIG_FILES="$CONFIG_FILES ripngd/Makefile" ;; - "bgpd/Makefile" ) CONFIG_FILES="$CONFIG_FILES bgpd/Makefile" ;; - "ospfd/Makefile" ) CONFIG_FILES="$CONFIG_FILES ospfd/Makefile" ;; - "ospf6d/Makefile" ) CONFIG_FILES="$CONFIG_FILES ospf6d/Makefile" ;; - "vtysh/Makefile" ) CONFIG_FILES="$CONFIG_FILES vtysh/Makefile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@AMTAR@,$AMTAR,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@CPP@,$CPP,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@MULTIPATH_NUM@,$MULTIPATH_NUM,;t t -s,@LIBPAM@,$LIBPAM,;t t -s,@RT_METHOD@,$RT_METHOD,;t t -s,@KERNEL_METHOD@,$KERNEL_METHOD,;t t -s,@OTHER_METHOD@,$OTHER_METHOD,;t t -s,@RTREAD_METHOD@,$RTREAD_METHOD,;t t -s,@IF_METHOD@,$IF_METHOD,;t t -s,@IF_PROC@,$IF_PROC,;t t -s,@IPFORWARD@,$IPFORWARD,;t t -s,@LIB_IPV6@,$LIB_IPV6,;t t -s,@ZEBRA@,$ZEBRA,;t t -s,@BGPD@,$BGPD,;t t -s,@RIPD@,$RIPD,;t t -s,@RIPNGD@,$RIPNGD,;t t -s,@OSPFD@,$OSPFD,;t t -s,@OSPF6D@,$OSPF6D,;t t -s,@VTYSH@,$VTYSH,;t t -s,@INCLUDES@,$INCLUDES,;t t -s,@CURSES@,$CURSES,;t t -s,@LIB_REGEX@,$LIB_REGEX,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # egrep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi - # Run the commands associated with the file. - case $ac_file in - config.h ) # update the timestamp -echo 'timestamp for config.h' >"./stamp-h1" - ;; - esac -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { case $dirpart/$fdir in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy=$dirpart/$fdir -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - - -echo " -zebra configuration -------------------- -zebra version : ${VERSION} -host operationg system : ${host_os} -source code location : ${srcdir} -compiler : ${CC} -compiler flags : ${CFLAGS} -directory for pid files : ${ac_piddir} -" diff --git a/configure.ac b/configure.ac index 341f185a..ad58c3a8 100755 --- a/configure.ac +++ b/configure.ac @@ -98,15 +98,8 @@ AC_ARG_ENABLE(ospf-te, [ --enable-ospf-te enable Traffic Engineering Extension to OSPF]) AC_ARG_ENABLE(multipath, [ --enable-multipath=ARG enable multipath function, ARG must be digit]) -AC_ARG_ENABLE(zebra_user, -[ --enable-user=ARG user to run zebra suite as (default zebra)]) -AC_ARG_ENABLE(zebra_group, -[ --enable-group=ARG group to run zebra suite as (default zebra)]) -AC_ARG_ENABLE(vty_group, -[ --enable-vty-group=ARG set vty sockets to have specified group as owner]) - AC_ARG_ENABLE(rtadv, -[ --enable-rtadv disable IPV6 router advertisment feature]) +[ --enable-rtadv enable IPV6 router advertisment feature]) if test "${enable_broken_aliases}" = "yes"; then if test "${enable_netlink}" = "yes" @@ -138,37 +131,11 @@ fi AC_MSG_CHECKING(Should Zebra's RTADV be used) if test "${enable_rtadv}" = "yes"; then AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_RTADV,,Use zebra routing advertisement) + AC_DEFINE(HAVE_RTADV,,Enable Zebra IPv6 Routing Advertisements) else AC_MSG_RESULT(no) fi -if test "${enable_user}" = "yes" ; then - enable_user="zebra" -elif test "${enable_user}" = "no"; then - enable_user="root" -fi -AC_DEFINE_UNQUOTED(ZEBRA_USER, "${enable_user}", Zebra User) - -if test "${enable_group}" = "yes" ; then - enable_group="zebra" -elif test "${enable_group}" = "no"; then - enable_group="root" -fi -AC_DEFINE_UNQUOTED(ZEBRA_GROUP, "${enable_group}", Zebra Group) - -if test x"${enable_vty_group}" = x"yes" ; then - AC_MSG_ERROR([--enable-vty-group requires a group as argument]) -fi -if test "${enable_vty_group}" = ""; then - AC_MSG_ERROR([--enable-vty-group requires a group as argument]) -fi -if test x"${enable_vty_group}" != x"no"; then - if test "${enable_vty_group}" != ""; then - AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group) - fi -fi - changequote(, )dnl MULTIPATH_NUM=1 @@ -897,28 +864,6 @@ AC_TRY_COMPILE([#include <sys/resource.h> AC_DEFINE(HAVE_RUSAGE,,rusage)], AC_MSG_RESULT(no)) -dnl ------------------- -dnl capabilities checks -dnl ------------------- -AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available) -AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl) - zebra_ac_keepcaps="yes"], - AC_MSG_RESULT(no) -) -if test x"${zebra_ac_keepcaps}" = x"yes"; then - AC_CHECK_HEADERS(sys/capability.h) -fi -if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then - AC_CHECK_LIB(cap, cap_init, - [AC_DEFINE(HAVE_LCAPS,1,Capabilities) - LIBCAP="-lcap" - ] - ) -fi -AC_SUBST(LIBCAP) - dnl --------------------------- dnl check for glibc 'backtrace' dnl --------------------------- @@ -971,7 +916,7 @@ else AC_MSG_RESULT(${zebra_statedir}) fi if test $zebra_statedir = "/dev/null"; then - echo "STATE DIRECTORY NOT FOUND!" + AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!') fi AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$zebra_statedir/zebra.pid",zebra PID) @@ -1021,6 +966,7 @@ host operationg system : ${host_os} source code location : ${srcdir} compiler : ${CC} compiler flags : ${CFLAGS} +linker flags : ${LDFLAGS} ${LIBS} state file directory : ${zebra_statedir} linker flags : ${LDFLAGS} ${LIBS} " diff --git a/configure.in b/configure.in deleted file mode 100755 index 341f185a..00000000 --- a/configure.in +++ /dev/null @@ -1,1026 +0,0 @@ -## -## Configure template file for Zebra. -## autoconf will generate configure script. -## -## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org> -## -AC_PREREQ(2.13) - -AC_INIT(lib/zebra.h) -AM_INIT_AUTOMAKE(zebra, 0.94) -AM_CONFIG_HEADER(config.h) - -dnl ----------------------------------- -dnl Get hostname and other information. -dnl ----------------------------------- -AC_CANONICAL_HOST - -dnl ------------ -dnl Check CFLAGS -dnl ------------ -AC_ARG_WITH(cflags, -[ --with-cflags Set CFLAGS for use in compilation.]) -if test "x$with_cflags" != "x" ; then - CFLAGS="$with_cflags" ; cflags_specified=yes ; -elif test -n "$CFLAGS" ; then - cflags_specified=yes ; -fi - -dnl -------- -dnl Check CC -dnl -------- -AC_PROG_CC - -dnl ----------------------------------------- -dnl If CLFAGS doesn\'t exist set default value -dnl ----------------------------------------- -if test "x$cflags_specified" = "x" ; then - CFLAGS="$CFLAGS -Wall" -fi - -dnl -------------- -dnl Check programs -dnl -------------- -AC_PROG_CPP -AC_PROG_INSTALL -AC_PROG_MAKE_SET -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) - -dnl --------- -dnl AIX check -dnl --------- -AC_AIX - -dnl ---------------------- -dnl Packages configuration -dnl ---------------------- -AC_ARG_ENABLE(vtysh, -[ --enable-vtysh, Make integrated VTY version of zebra]) -AC_ARG_ENABLE(ipv6, -[ --disable-ipv6 turn off IPv6 related features and daemons]) -AC_ARG_ENABLE(zebra, -[ --disable-zebra do not build zebra daemon]) -AC_ARG_ENABLE(bgpd, -[ --disable-bgpd do not build bgpd]) -AC_ARG_ENABLE(ripd, -[ --disable-ripd do not build ripd]) -AC_ARG_ENABLE(ripngd, -[ --disable-ripngd do not build ripngd]) -AC_ARG_ENABLE(ospfd, -[ --disable-ospfd do not build ospfd]) -AC_ARG_ENABLE(ospf6d, -[ --disable-ospf6d do not build ospf6d]) -AC_ARG_ENABLE(bgp-announce, -[ --disable-bgp-announce, turn off BGP route announcement]) -AC_ARG_ENABLE(netlink, -[ --enable-netlink force to use Linux netlink interface]) -AC_ARG_ENABLE(broken-aliases, -[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X]) -AC_ARG_ENABLE(snmp, -[ --enable-snmp enable SNMP support]) -AC_ARG_WITH(libpam, -[ --with-libpam use libpam for PAM support in vtysh]) -AC_ARG_ENABLE(tcp-zebra, -[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon]) -dnl Temporary option until OSPF NSSA implementation complete -AC_ARG_ENABLE(nssa, -[ --enable-nssa enable OSPF NSSA option]) -AC_ARG_ENABLE(opaque-lsa, -[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)]) -AC_ARG_ENABLE(ospfapi, -[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database, - (this is the default if --enable-opaque-lsa is not set)]) -AC_ARG_ENABLE(ospfclient, -[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI, - (this is the default if --disable-ospfapi is set)]) -AC_ARG_ENABLE(ospf-te, -[ --enable-ospf-te enable Traffic Engineering Extension to OSPF]) -AC_ARG_ENABLE(multipath, -[ --enable-multipath=ARG enable multipath function, ARG must be digit]) -AC_ARG_ENABLE(zebra_user, -[ --enable-user=ARG user to run zebra suite as (default zebra)]) -AC_ARG_ENABLE(zebra_group, -[ --enable-group=ARG group to run zebra suite as (default zebra)]) -AC_ARG_ENABLE(vty_group, -[ --enable-vty-group=ARG set vty sockets to have specified group as owner]) - -AC_ARG_ENABLE(rtadv, -[ --enable-rtadv disable IPV6 router advertisment feature]) - -if test "${enable_broken_aliases}" = "yes"; then - if test "${enable_netlink}" = "yes" - then - echo "Sorry, you can't use netlink with broken aliases" - exit 1 - fi - AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias) - enable_netlink=no -fi - -if test "${enable_tcp_zebra}" = "yes"; then - AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication) -fi - -if test "${enable_nssa}" = "yes"; then - AC_DEFINE(HAVE_NSSA,,OSPF NSSA) -fi - -if test "${enable_opaque_lsa}" = "yes"; then - AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA) -fi - -if test "${enable_ospf_te}" = "yes"; then - AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA) - AC_DEFINE(HAVE_OSPF_TE,,OSPF TE) -fi - -AC_MSG_CHECKING(Should Zebra's RTADV be used) -if test "${enable_rtadv}" = "yes"; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_RTADV,,Use zebra routing advertisement) -else - AC_MSG_RESULT(no) -fi - -if test "${enable_user}" = "yes" ; then - enable_user="zebra" -elif test "${enable_user}" = "no"; then - enable_user="root" -fi -AC_DEFINE_UNQUOTED(ZEBRA_USER, "${enable_user}", Zebra User) - -if test "${enable_group}" = "yes" ; then - enable_group="zebra" -elif test "${enable_group}" = "no"; then - enable_group="root" -fi -AC_DEFINE_UNQUOTED(ZEBRA_GROUP, "${enable_group}", Zebra Group) - -if test x"${enable_vty_group}" = x"yes" ; then - AC_MSG_ERROR([--enable-vty-group requires a group as argument]) -fi -if test "${enable_vty_group}" = ""; then - AC_MSG_ERROR([--enable-vty-group requires a group as argument]) -fi -if test x"${enable_vty_group}" != x"no"; then - if test "${enable_vty_group}" != ""; then - AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group) - fi -fi - -changequote(, )dnl - -MULTIPATH_NUM=1 - -case "${enable_multipath}" in - [0-9]|[1-9][0-9]) - MULTIPATH_NUM="${enable_multipath}" - ;; - "") - ;; - *) - echo "Please specify digit to --enable-multipath ARG." - exit 1 - ;; -esac - -changequote([, ])dnl - -AC_SUBST(MULTIPATH_NUM) - -dnl ------------------- -dnl Check header files. -dnl ------------------- -AC_STDC_HEADERS -AC_CHECK_HEADERS(string.h stropts.h sys/conf.h sys/ksym.h sys/time.h sys/times.h sys/select.h sys/sysctl.h sys/sockio.h sys/types.h net/if_dl.h net/if_var.h linux/version.h kvm.h netdb.h netinet/in.h net/netopt.h netinet/in_var.h netinet/in6_var.h netinet6/in6_var.h netinet/in6.h inet/nd.h asm/types.h netinet/icmp6.h netinet6/nd6.h libutil.h) - -dnl check some types -AC_C_CONST -dnl AC_TYPE_PID_T -AC_TYPE_SIGNAL - -dnl Some systems (Solaris 2.x) require libnsl (Network Services Library) -case "$host" in - *-sunos5.6* | *-solaris2.6*) - opsys=sol2-6 - AC_DEFINE(SUNOS_5,,SunOS 5) - AC_CHECK_LIB(xnet, main) - CURSES=-lcurses - ;; - *-sunos5* | *-solaris2*) - AC_DEFINE(SUNOS_5,,SunOS 5) - AC_CHECK_LIB(socket, main) - AC_CHECK_LIB(nsl, main) - CURSES=-lcurses - ;; - *-linux-*) - opsys=gnu-linux - AC_DEFINE(GNU_LINUX,,GNU Linux) - ;; - *-nec-sysv4*) - AC_CHECK_LIB(nsl, gethostbyname) - AC_CHECK_LIB(socket, socket) - ;; - *-freebsd3.2) - AC_DEFINE(FREEBSD_32,,FreeBSD 3.2) - ;; - *-openbsd*) - opsys=openbsd - AC_DEFINE(OPEN_BSD,,OpenBSD) - ;; - *-bsdi*) - opsys=bsdi - OTHER_METHOD="mtu_kvm.o" - AC_CHECK_LIB(kvm, main) - ;; -esac - -dnl --------------------- -dnl Integrated VTY option -dnl --------------------- -case "${enable_vtysh}" in - "yes") VTYSH="vtysh"; - AC_DEFINE(VTYSH,,VTY shell) - AC_CHECK_LIB(tinfo, tputs, , AC_CHECK_LIB(ncurses, tputs)) - AC_CHECK_LIB(readline, main) - if test $ac_cv_lib_readline_main = no; then - AC_MSG_ERROR([vtysh needs libreadline but was not found on your system.]) - fi - AC_CHECK_HEADER(readline/history.h) - if test $ac_cv_header_readline_history_h = no;then - AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.]) - fi - AC_CHECK_LIB(readline, rl_completion_matches) - if test $ac_cv_lib_readline_rl_completion_matches = no; then - AC_DEFINE(rl_completion_matches,completion_matches,Old readline) - fi - ;; - "no" ) VTYSH="";; - * ) ;; -esac - -dnl ---------- -dnl PAM module -dnl ---------- -if test "$with_libpam" = "yes"; then - AC_CHECK_HEADER(security/pam_misc.h) - if test "$ac_cv_header_security_pam_misc_h" = yes; then - AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h) - AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv) - pam_conv_func="misc_conv" - fi - AC_CHECK_HEADER(security/openpam.h) - if test "$ac_cv_header_security_openpam_h" = yes; then - AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h) - AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv) - pam_conv_func="openpam_ttyconv" - fi - if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then - AC_MSG_WARN([*** pam support will not be built ***]) - with_libpam="no" - fi -fi - -if test "$with_libpam" = "yes"; then -dnl took this test from proftpd's configure.in and suited to our needs -dnl ------------------------------------------------------------------------- -dnl -dnl This next check looks funky due to a linker problem with some versions -dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library -dnl omitted requiring libdl linking information. PAM-0.72 or better ships -dnl with RedHat 6.2 and Debian 2.2 or better. -AC_CHECK_LIB(pam, pam_start, - [AC_CHECK_LIB(pam, $pam_conv_func, - [AC_DEFINE(USE_PAM,,Use PAM for authentication) - LIBPAM="-lpam"], - [AC_DEFINE(USE_PAM,,Use PAM for authentication) - LIBPAM="-lpam -lpam_misc"] - ) - ], - - [AC_CHECK_LIB(pam, pam_end, - [AC_CHECK_LIB(pam, $pam_conv_func, - [AC_DEFINE(USE_PAM,,Use PAM for authentication) - LIBPAM="-lpam -ldl"], - [AC_DEFINE(USE_PAM,,Use PAM for authentication) - LIBPAM="-lpam -ldl -lpam_misc"] - ) - ],AC_MSG_WARN([*** pam support will not be built ***]), - [-ldl]) - ] -) -fi -AC_SUBST(LIBPAM) - -dnl ------------------------------- -dnl Endian-ness check -dnl ------------------------------- -AC_WORDS_BIGENDIAN - -dnl ------------------------------- -dnl check the size in byte of the C -dnl ------------------------------- -dnl AC_CHECK_SIZEOF(char) -dnl AC_CHECK_SIZEOF(int) -dnl AC_CHECK_SIZEOF(short) -dnl AC_CHECK_SIZEOF(long) - -dnl ---------------------------- -dnl check existance of functions -dnl ---------------------------- -AC_CHECK_FUNCS(bcopy bzero strerror inet_aton daemon snprintf vsnprintf strlcat strlcpy if_nametoindex if_indextoname getifaddrs) -AC_CHECK_FUNCS(setproctitle, , - [AC_CHECK_LIB(util, setproctitle, - [LIBS="$LIBS -lutil" - AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle) - ] - ) - ] -) - -dnl ------------------------------------ -dnl Determine routing get and set method -dnl ------------------------------------ -AC_MSG_CHECKING(zebra between kernel interface method) -if test x"$opsys" = x"gnu-linux"; then - if test "${enable_netlink}" = "yes";then - AC_MSG_RESULT(netlink) - RT_METHOD=rt_netlink.o - AC_DEFINE(HAVE_NETLINK,,netlink) - netlink=yes - elif test "${enable_netlink}" = "no"; then - AC_MSG_RESULT(ioctl) - RT_METHOD=rt_ioctl.o - netlink=no - else - AC_MSG_RESULT(netlink) - RT_METHOD=rt_netlink.o - AC_DEFINE(HAVE_NETLINK,,netlink) - netlink=yes - fi -else - if test "$opsys" = "sol2-6";then - AC_MSG_RESULT(solaris) - KERNEL_METHOD="kernel_socket.o" - RT_METHOD="rt_socket.o" - else - AC_TRY_RUN([#include <errno.h> -#include <sys/types.h> -#include <sys/socket.h> - -main () -{ - int ac_sock; - - ac_sock = socket (AF_ROUTE, SOCK_RAW, 0); - if (ac_sock < 0 && errno == EINVAL) - exit (1); - exit (0); -}], - [KERNEL_METHOD=kernel_socket.o - RT_METHOD=rt_socket.o - AC_MSG_RESULT(socket)], - [RT_METHOD=rt_ioctl.o - AC_MSG_RESULT(ioctl)], - [KERNEL_METHOD=kernel_socket.o - RT_METHOD=rt_socket.o - AC_MSG_RESULT(socket)]) - fi -fi -AC_SUBST(RT_METHOD) -AC_SUBST(KERNEL_METHOD) -AC_SUBST(OTHER_METHOD) - -dnl ------------------------------ -dnl check kernel route read method -dnl ------------------------------ -AC_CACHE_CHECK(route read method check, zebra_rtread, -[if test "$netlink" = yes; then - RTREAD_METHOD="rtread_netlink.o" - zebra_rtread="netlink" -else -for zebra_rtread in /proc/net/route /dev/ip /dev/null; -do - test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break -done -case $zebra_rtread in - "/proc/net/route") RTREAD_METHOD="rtread_proc.o" - zebra_rtread="proc";; - "/dev/ip") RTREAD_METHOD="rtread_getmsg.o" - zebra_rtread="getmsg";; - *) RTREAD_METHOD="rtread_sysctl.o" - zebra_rtread="sysctl";; -esac -fi]) -AC_SUBST(RTREAD_METHOD) - -dnl ----------------------------- -dnl check interface lookup method -dnl ----------------------------- -AC_MSG_CHECKING(interface looking up method) -if test "$netlink" = yes; then - AC_MSG_RESULT(netlink) - IF_METHOD=if_netlink.o -else - if test "$opsys" = "sol2-6";then - AC_MSG_RESULT(solaris) - IF_METHOD=if_ioctl.o - elif test "$opsys" = "openbsd";then - AC_MSG_RESULT(openbsd) - IF_METHOD=if_ioctl.o - elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then - AC_MSG_RESULT(sysctl) - IF_METHOD=if_sysctl.o - AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST) - else - AC_MSG_RESULT(ioctl) - IF_METHOD=if_ioctl.o - fi -fi -AC_SUBST(IF_METHOD) - -dnl ----------------------- -dnl check proc file system. -dnl ----------------------- -if test -r /proc/net/dev; then - AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev) - IF_PROC=if_proc.o -fi - -if test -r /proc/net/if_inet6; then - AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6) - IF_PROC=if_proc.o -fi -AC_SUBST(IF_PROC) - -dnl ----------------------------- -dnl check ipforward detect method -dnl ----------------------------- -AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path, -[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null; -do - test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break -done -case $zebra_ipforward_path in - "/proc/net/snmp") IPFORWARD=ipforward_proc.o - zebra_ipforward_path="proc";; - "/dev/ip") - case "$host" in - *-nec-sysv4*) IPFORWARD=ipforward_ews.o - zebra_ipforward_path="ews";; - *) IPFORWARD=ipforward_solaris.o - zebra_ipforward_path="solaris";; - esac;; - *) IPFORWARD=ipforward_sysctl.o - zebra_ipforward_path="sysctl";; -esac]) -AC_SUBST(IPFORWARD) - -AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no]) - -dnl ---------- -dnl IPv6 check -dnl ---------- -AC_MSG_CHECKING(whether does this OS have IPv6 stack) -if test "${enable_ipv6}" = "no"; then - AC_MSG_RESULT(disabled) -else -dnl ---------- -dnl INRIA IPv6 -dnl ---------- - if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - AC_DEFINE(HAVE_IPV6,1,INRIA IPv6) - AC_DEFINE(INRIA_IPV6,1,INRIA IPv6) - RIPNGD="ripngd" - OSPF6D="ospf6d" - LIB_IPV6="" - AC_MSG_RESULT(INRIA IPv6) -dnl --------- -dnl KAME IPv6 -dnl --------- - elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - AC_DEFINE(HAVE_IPV6,1,KAME IPv6) - AC_DEFINE(KAME,1,KAME IPv6) - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then - LIB_IPV6="-L/usr/local/v6/lib -linet6" - fi - AC_MSG_RESULT(KAME) -dnl ------------------------- -dnl MUSICA IPv6 -dnl default host check -dnl It is not used by Kheops -dnl ------------------------- - elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - AC_DEFINE(HAVE_IPV6,1,Musicia IPv6) - AC_DEFINE(MUSICA,1,Musica IPv6 stack) - AC_DEFINE(KAME,1,KAME IPv6 stack) - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then - LIB_IPV6="-L/usr/local/v6/lib -linet6" - fi - AC_MSG_RESULT(MUSICA) -dnl --------- -dnl NRL check -dnl --------- - elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then - zebra_cv_ipv6=yes - AC_DEFINE(HAVE_IPV6,1,NRL IPv6) - AC_DEFINE(NRL,1,NRL) - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test x"$opsys" = x"bsdi";then - AC_DEFINE(BSDI_NRL,,BSDI) - AC_MSG_RESULT(BSDI_NRL) - else - AC_MSG_RESULT(NRL) - fi -dnl ---------- -dnl Linux IPv6 -dnl ---------- - elif test "${enable_ipv6}" = "yes"; then - AC_EGREP_CPP(yes, [ - #include <linux/version.h> - /* 2.1.128 or later */ - #if LINUX_VERSION_CODE >= 0x020180 - yes - #endif], - [zebra_cv_ipv6=yes - zebra_cv_linux_ipv6=yes - AC_MSG_RESULT(Linux IPv6)]) - else - if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route" - then - zebra_cv_ipv6=yes - zebra_cv_linux_ipv6=yes - AC_MSG_RESULT(Linux IPv6) - fi - fi - - if test "$zebra_cv_linux_ipv6" = "yes";then - AC_MSG_CHECKING(for GNU libc >= 2.1) - AC_DEFINE(HAVE_IPV6,1,Linux IPv6) - AC_EGREP_CPP(yes, [ -#include <features.h> -#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 - yes -#endif], - [glibc=yes - AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack) - AC_MSG_RESULT(yes)], - AC_MSG_RESULT(no) - ) - RIPNGD="ripngd" - OSPF6D="ospf6d" - if test "$glibc" != "yes"; then - INCLUDES="-I/usr/inet6/include" - if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then - LIB_IPV6="-L/usr/inet6/lib -linet6" - fi - fi - fi - -dnl ----------------------- -dnl Set IPv6 related values -dnl ----------------------- - LIBS="$LIB_IPV6 $LIBS" - AC_SUBST(LIB_IPV6) - - if test x"$RIPNGD" = x""; then - AC_MSG_RESULT(IPv4 only) - fi -fi - -dnl -------------------- -dnl Daemon disable check -dnl -------------------- -if test "${enable_zebra}" = "no";then - ZEBRA="" -else - ZEBRA="zebra" -fi - -if test "${enable_bgpd}" = "no";then - BGPD="" -else - BGPD="bgpd" -fi - -if test "${enable_ripd}" = "no";then - RIPD="" -else - RIPD="ripd" -fi - -if test "${enable_ospfd}" = "no";then - OSPFD="" -else - OSPFD="ospfd" -fi - -OSPFCLIENT="" -if test "${enable_opaque_lsa}" = "yes"; then - if test "${enable_ospfapi}" != "no";then - AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI) - - if test "${enable_ospfclient}" != "no";then - OSPFCLIENT="ospfclient" - fi - fi - -fi - -case "${enable_ripngd}" in - "yes") RIPNGD="ripngd";; - "no" ) RIPNGD="";; - * ) ;; -esac - -case "${enable_ospf6d}" in - "yes") OSPF6D="ospf6d";; - "no" ) OSPF6D="";; - * ) ;; -esac - -if test "${enable_bgp_announce}" = "no";then - AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra) -fi - -AC_SUBST(ZEBRA) -AC_SUBST(BGPD) -AC_SUBST(RIPD) -AC_SUBST(RIPNGD) -AC_SUBST(OSPFD) -AC_SUBST(OSPF6D) -AC_SUBST(VTYSH) -AC_SUBST(INCLUDES) -AC_SUBST(CURSES) -AC_SUBST(OSPFCLIENT) -AC_SUBST(OSPFAPI) -AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)]) -AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)]) -AC_CHECK_LIB(crypt, crypt) -AC_CHECK_LIB(resolv, res_init) -AC_CHECK_LIB(m, main) - -dnl --------------------------------------------------- -dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY -dnl --------------------------------------------------- -AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop)) -AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton)) -AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton)) - -dnl --------------------------- -dnl check system has GNU regexp -dnl --------------------------- -dnl AC_MSG_CHECKING(whether system has GNU regex) -AC_CHECK_LIB(c, regexec, -[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library) - LIB_REGEX=""], -[LIB_REGEX="regex.o"]) -AC_SUBST(LIB_REGEX) - -dnl ------------------ -dnl check SNMP library -dnl ------------------ -if test "${enable_snmp}" = "yes";then -dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes) - if test "${HAVE_SNMP}" = ""; then - old_libs="${LIBS}" - LIBS="-L/usr/lib" - unset ac_cv_lib_snmp_asn_parse_int - AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, ) - if test "${NEED_CRYPTO}" = ""; then - AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ]) - else - AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto") - fi - LIBS="${old_libs}" - fi - if test "${HAVE_SNMP}" = ""; then - old_libs="${LIBS}" - LIBS="-L/usr/lib" - unset ac_cv_lib_snmp_asn_parse_int - AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, ) - if test "${HAVE_SNMP}" = ""; then - unset ac_cv_lib_snmp_asn_parse_int - AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, ) - if test "${NEED_CRYPTO}" = "yes"; then - AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto") - fi - fi - LIBS="${old_libs}" - fi - - if test "${HAVE_SNMP}" = ""; then - old_libs="${LIBS}" - LIBS="-L/usr/local/lib" - unset ac_cv_lib_snmp_asn_parse_int - AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes) - if test "${HAVE_SNMP}" = ""; then - unset ac_cv_lib_snmp_asn_parse_int - AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, ) - if test "${NEED_CRYPTO}" = "yes"; then - AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto") - fi - fi - LIBS="${old_libs}" - fi - - if test "${HAVE_SNMP}" = "yes"; then - for ac_snmp in /usr/include/net-snmp/library/asn1.h /usr/include/ucd-snmp/asn1.h /usr/local/include/ucd-snmp/asn1.h /dev/null - do - test -f "${ac_snmp}" && break - done - - case ${ac_snmp} in - /usr/include/net-snmp/*) - AC_DEFINE(HAVE_SNMP,,SNMP) - AC_DEFINE(HAVE_NETSNMP,,SNMP) - AC_DEFINE(UCD_COMPATIBLE,,SNMP) - CFLAGS="${CFLAGS} -I/usr/include/net-snmp -I/usr/include/net-snmp/library" - if test "${HAVE_NETSNMP}" = "yes"; then - LIBS="${LIBS} -lnetsnmp" - else - LIBS="${LIBS} -lsnmp" - fi - ;; - /usr/include/ucd-snmp/*) - AC_DEFINE(HAVE_SNMP,,SNMP) - CFLAGS="${CFLAGS} -I/usr/include/ucd-snmp" - LIBS="${LIBS} -lsnmp" - ;; - /usr/local/include/ucd-snmp/*) - AC_DEFINE(HAVE_SNMP,,SNMP) - CFLAGS="${CFLAGS} -I/usr/local/include/ucd-snmp" - LIBS="${LIBS} -L/usr/local/lib -lsnmp" - ;; - esac - if test "${NEED_CRYPTO}" = "yes"; then - LIBS="${LIBS} -lcrypto" - fi - fi -fi - -dnl ---------------------------- -dnl check sa_len of sockaddr -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr has a sa_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/socket.h> -],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SA_LEN,,sa_len)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check sin_len of sockaddr_in -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet/in.h> -],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIN_LEN,,sin_len)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check sun_len of sockaddr_un -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/un.h> -],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SUN_LEN,,sun_len)], - AC_MSG_RESULT(no)) - -dnl ----------------------------------- -dnl check sin6_scope_id of sockaddr_in6 -dnl ----------------------------------- -if test "$zebra_cv_ipv6" = yes; then - AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field) - AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet/in.h> -],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)], - AC_MSG_RESULT(no)) -fi - -dnl ---------------------------- -dnl check socklen_t exist or not -dnl ---------------------------- -AC_MSG_CHECKING(whther socklen_t is defined) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -],[socklen_t ac_x;], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)], - AC_MSG_RESULT(no)) - -dnl ------------------------ -dnl check struct sockaddr_dl -dnl ------------------------ -AC_MSG_CHECKING(whether struct sockaddr_dl exist) -AC_EGREP_HEADER(sockaddr_dl, -net/if_dl.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)], - AC_MSG_RESULT(no)) - -dnl -------------------------- -dnl check structure ifaliasreq -dnl -------------------------- -AC_MSG_CHECKING(whether struct ifaliasreq exist) -AC_EGREP_HEADER(ifaliasreq, -net/if.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check structure in6_aliasreq -dnl ---------------------------- -AC_MSG_CHECKING(whether struct in6_aliasreq exist) -AC_EGREP_HEADER(in6_aliasreq, -netinet6/in6_var.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)], - AC_MSG_RESULT(no)) - -dnl ----------------------------------- -dnl check ifra_lifetime of in6_aliasreq -dnl ----------------------------------- -AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist) -AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet6/in6_var.h> -],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)], - AC_MSG_RESULT(no)) - -dnl --------------------------- -dnl check structure rt_addrinfo -dnl --------------------------- -AC_MSG_CHECKING(whether struct rt_addrinfo exist) -AC_EGREP_HEADER(rt_addrinfo, -net/route.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)], - AC_MSG_RESULT(no)) - -dnl -------------------------- -dnl check structure in_pktinfo -dnl -------------------------- -AC_MSG_CHECKING(whether struct in_pktinfo exist) -AC_TRY_COMPILE([#include <netinet/in.h> -],[struct in_pktinfo ac_x;], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)], - AC_MSG_RESULT(no)) - -dnl -------------------------------------- -dnl checking for getrusage struct and call -dnl -------------------------------------- -AC_MSG_CHECKING(whether getrusage is available) -AC_TRY_COMPILE([#include <sys/resource.h> -],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_RUSAGE,,rusage)], - AC_MSG_RESULT(no)) - -dnl ------------------- -dnl capabilities checks -dnl ------------------- -AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available) -AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl) - zebra_ac_keepcaps="yes"], - AC_MSG_RESULT(no) -) -if test x"${zebra_ac_keepcaps}" = x"yes"; then - AC_CHECK_HEADERS(sys/capability.h) -fi -if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then - AC_CHECK_LIB(cap, cap_init, - [AC_DEFINE(HAVE_LCAPS,1,Capabilities) - LIBCAP="-lcap" - ] - ) -fi -AC_SUBST(LIBCAP) - -dnl --------------------------- -dnl check for glibc 'backtrace' -dnl --------------------------- -if test "${glibc}" = "yes"; then - AC_CHECK_HEADER(execinfo.h) -fi -if test x"${ac_cv_header_execinfo_h}" = x"yes"; then - AC_CHECK_FUNC(backtrace, - [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)] - ) -fi - -dnl ------------- -dnl check version -dnl ------------- -file="${srcdir}/lib/version.h" -VERSION=`sed -ne 's/^#.*ZEBRA_VERSION.*\"\([^\"]*\)\"$/\1/p' $file` -AC_SUBST(VERSION) - -dnl ---------- -dnl configure date -dnl ---------- -CONFDATE=`date '+%Y%m%d'` -AC_SUBST(CONFDATE) - -dnl ------------------------------ -dnl set paths for state directory -dnl ------------------------------ -if test "${prefix}" = "NONE"; then - zebra_statedir_prefix=""; -else - zebra_statedir_prefix=${prefix} -fi -if test "${localstatedir}" = '${prefix}/var'; then - AC_CACHE_CHECK(state directory,ac_statedir, - [for ZEBRA_STATE_DIR in ${zebra_statedir_prefix}/var/run dnl - ${zebra_statedir_prefix}/var/adm dnl - ${zebra_statedir_prefix}/etc dnl - /var/run dnl - /var/adm dnl - /etc dnl - /dev/null; - do - test -d $ZEBRA_STATE_DIR && break - done - zebra_statedir=$ZEBRA_STATE_DIR]) -else - zebra_statedir=${localstatedir} - AC_MSG_CHECKING(directory to use for state file) - AC_MSG_RESULT(${zebra_statedir}) -fi -if test $zebra_statedir = "/dev/null"; then - echo "STATE DIRECTORY NOT FOUND!" -fi - -AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$zebra_statedir/zebra.pid",zebra PID) -AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$zebra_statedir/ripd.pid",ripd PID) -AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$zebra_statedir/ripngd.pid",ripngd PID) -AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$zebra_statedir/bgpd.pid",bgpd PID) -AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$zebra_statedir/ospfd.pid",ospfd PID) -AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$zebra_statedir/ospf6d.pid",ospf6d PID) -AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$zebra_statedir/zserv.api",zebra api socket) -AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$zebra_statedir/zebra.vty",zebra vty socket) -AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$zebra_statedir/ripd.vty",rip vty socket) -AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$zebra_statedir/ripngd.vty",ripng vty socket) -AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$zebra_statedir/bgpd.vty",bgpd vty socket) -AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$zebra_statedir/ospfd.vty",ospfd vty socket) -AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$zebra_statedir/ospf6d.vty",ospf6d vty socket) - -dnl --------------------------- -dnl Check htonl works correctly -dnl --------------------------- -AC_MSG_CHECKING(for working htonl) -AC_CACHE_VAL(ac_cv_htonl_works, [ -AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_NETDB_H -#include <netdb.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif], -[htonl (0);], -ac_cv_htonl_works=yes, -ac_cv_htonl_works=no)]) -AC_MSG_RESULT($ac_cv_htonl_works) - -AC_OUTPUT(Makefile lib/Makefile zebra/Makefile ripd/Makefile - ripngd/Makefile bgpd/Makefile ospfd/Makefile - ospf6d/Makefile vtysh/Makefile doc/Makefile - ospfclient/Makefile - redhat/zebra.spec) - -echo " -zebra configuration -------------------- -zebra version : ${VERSION} -host operationg system : ${host_os} -source code location : ${srcdir} -compiler : ${CC} -compiler flags : ${CFLAGS} -state file directory : ${zebra_statedir} -linker flags : ${LDFLAGS} ${LIBS} -" diff --git a/doc/.cvsignore b/doc/.cvsignore index 2916b2f7..75c36c2e 100644 --- a/doc/.cvsignore +++ b/doc/.cvsignore @@ -1,3 +1,4 @@ Makefile +Makefile.in draft-zebra-00.txt zebra.info-* diff --git a/doc/ChangeLog b/doc/ChangeLog index 8aa0c802..cfe6e0e2 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,3 @@ -2003-01-22 Christian Hammers <ch@westend.com> - - * ospfd.texi (OSPF router, OSPF router): Add description. - 2002-07-07 Kunihiro Ishiguro <kunihiro@ipinfusion.com> * zebra-0.93 released. diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index e7f706ee..00000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,431 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ -INCLUDES = @INCLUDES@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -info_TEXINFOS = zebra.texi - -zebra_TEXINFOS = appendix.texi basic.texi bgpd.texi filter.texi install.texi \ - ipv6.texi kernel.texi main.texi ospf6d.texi ospfd.texi overview.texi \ - protocol.texi ripd.texi ripngd.texi routemap.texi snmp.texi vtysh.texi - - -man_MANS = vtysh.1 bgpd.8 ospf6d.8 ospfd.8 ripd.8 ripngd.8 zebra.8 - -EXTRA_DIST = BGP-TypeCode draft-zebra-00.ms draft-zebra-00.txt $(man_MANS) -subdir = doc -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -INFO_DEPS = zebra.info -DVIS = zebra.dvi -TEXINFOS = zebra.texi - -NROFF = nroff -MANS = $(man_MANS) -DIST_COMMON = $(zebra_TEXINFOS) ChangeLog Makefile.am Makefile.in \ - texinfo.tex -all: all-am - -.SUFFIXES: -.SUFFIXES: .dvi .info .ps .texi -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -zebra.info: zebra.texi $(zebra_TEXINFOS) -zebra.dvi: zebra.texi $(zebra_TEXINFOS) - -.texi.info: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -.texi.dvi: - TEXINPUTS="$(srcdir)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $< - -.texi: - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ - `echo $< | sed 's,.*/,,'` - -MAKEINFO = @MAKEINFO@ -TEXI2DVI = texi2dvi -DVIPS = dvips -.dvi.ps: - $(DVIPS) $< -o $@ - -uninstall-info-am: - $(PRE_UNINSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \ - install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - (if cd $(DESTDIR)$(infodir); then \ - echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \ - rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \ - else :; fi); \ - done - -dist-info: $(INFO_DEPS) - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - d=$(srcdir); \ - for file in $$d/$$base*; do \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f $(distdir)/$$relfile || \ - cp -p $$file $(distdir)/$$relfile; \ - done; \ - done - -mostlyclean-aminfo: - -rm -f zebra.aux zebra.cp zebra.cps zebra.dvi zebra.fn zebra.ky zebra.log \ - zebra.op zebra.pg zebra.ps zebra.tmp zebra.toc zebra.tp \ - zebra.vr - -maintainer-clean-aminfo: - cd $(srcdir) && \ - list='$(INFO_DEPS)'; for i in $$list; do \ - rm -f $$i; \ - if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ - rm -f $$i-[0-9]*; \ - fi; \ - done - -man1dir = $(mandir)/man1 -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 1*) ;; \ - *) ext='1' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done - -man8dir = $(mandir)/man8 -install-man8: $(man8_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man8dir) - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 8*) ;; \ - *) ext='8' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ - done -uninstall-man8: - @$(NORMAL_UNINSTALL) - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ - rm -f $(DESTDIR)$(man8dir)/$$inst; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="${top_distdir}" distdir="$(distdir)" \ - dist-info -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) $(MANS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(man1dir) $(DESTDIR)$(man8dir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: $(DVIS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am install-man - -install-exec-am: - -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(infodir) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - d=$(srcdir); \ - for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \ - if test -f $$ifile; then \ - relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \ - echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \ - $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \ - else : ; fi; \ - done; \ - done - @$(POST_INSTALL) - @if (install-info --version && \ - install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ - install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ - done; \ - else : ; fi -install-man: install-man1 install-man8 - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-man - -uninstall-man: uninstall-man1 uninstall-man8 - -.PHONY: all all-am check check-am clean clean-generic dist-info \ - distclean distclean-generic distdir dvi dvi-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-man1 install-man8 install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ - mostlyclean-aminfo mostlyclean-generic uninstall uninstall-am \ - uninstall-info-am uninstall-man uninstall-man1 uninstall-man8 - - -draft-zebra-00.txt: - groff -T ascii -ms draft-zebra-00.ms > draft-zebra-00.txt -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/doc/mpls/ChangeLog.opaque.txt b/doc/mpls/ChangeLog.opaque.txt new file mode 100644 index 00000000..68ddf4c8 --- /dev/null +++ b/doc/mpls/ChangeLog.opaque.txt @@ -0,0 +1,179 @@ +----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- +Changes 2001.12.03 + +1. Bug fixes + + 1.1 Though a new member "oi" has added to "struct ospf_lsa" to control + flooding scope of type-9 Opaque-LSAs, the value was always NULL + because no one set it. + + 1.2 In the function "show_ip_ospf_database_summary()" and "show_lsa_ + detail_adv_router()", VTY output for type-11 Opaque-LSAs did not + work properly. + + 1.3 URL for the opaque-type assignment reference has changed. + + 1.4 In the file "ospf_mpls_te.c", printf formats have changed to + avoid compiler warning messages; "%lu" -> "%u", "%lx" -> "%x". + Note that this hack depends on OS, compiler and their versions. + + 1.5 One of attached documentation "opaque_lsa.txt" has changed to + reflect the latest coding. + +2. Feature enhancements + + 2.1 Knowing that it is an ugly hack, an "officially unallocated" + opaque-type value 0 has newly introduced as a "wildcard", + which matches to all opaque-type. + This value must not be flooded to the network, of course. + + 2.2 The Opaque-core module makes use of newly introduced hooks to + dispatch every LSDB change (LSA installation and deletion) to + preregistered opaque users. + Therefore, by providing appropriate callback functions as new + parameters of "ospf_register_opaque_functab()", an opaque user + can refer to every LSA instance to be installed into, or to be + deleted from, the LSDB. + +----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- +Changes 2001.10.31 + +1. Bug fixes + + 1.1 Since each LSA has their own lifetime, they will remain in a + routing domain (being stored in LSDB of each router), until their + age naturally reach to MaxAge or explicitly being flushed by the + originated router. Therefore, if a router restarted with a short + downtime, it is possible that previously flooded self-originated + LSAs might received if the NSM status is not less than Exchange. + + There were some problems in the way of handling self-originated + Opaque-LSAs if they are contained in a received LSUpd message, + but not installed to the local LSDB yet. + Regardless of some conditions to start originating Opaque-LSAs + (there should be at least one opaque-capable full-state neighbor), + the function "ospf_flood()" will be called to flood and install + this brand-new looking LSA. + As the result, when the NSM of an opaque-capable neighbor gets + full, internal state inconsistency happens; a user of Opaque-LSA + such as MPLS-TE can refer to self-originated LSAs in the local + LSDB, but cannot modify their contents... + + Above problems have fixed with a policy "flush it from the whole + routing domain and keep silent until the flushing completed". + By using this sweeping technique, we can be free from confusion + caused by self-originated LSAs received via network. + + 1.2 The function "ospf_opaque_type_name()" contained massive ifdefs + corresponding to each "opaque-type". + These unnecessary ifdefs are removed completely. + + 1.3 In the function "ospf_delete_opaque_functab()", there was an + improper loop control that causes illegal memory access. + Original coding was "next = nextnode (node)". + + 1.4 The function "ospf_mpls_te_ism_change()" could not handle the + case when the ISM changes from Waiting to DR/BDR/Other. + So, there was a case that even if one of an ISM become + operational and MPLS-TE module has started, the corresponding + Opaque-LSA cannot be originated. + + 1.5 The function "ospf_opaque_lsa_reoriginate_schedule()" did not + allow to be called multiple times, simply because handling + module for the given "lsa-type & opaque-type" already exists. + But this assumption seems to be wrong. + Change the policy to allow this function to be called multiple + times and let the caller to decide what should do when the + corresponding callback function "(* functab->lsa_originator)()" + is called. + +2. Feature enhancements + + 2.1 The global bitmap "opaque" has introduced instead of former flag + "OpaqueCapable", to store complex conditions to handle Opaque-LSAs. + + 2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic + -06.txt", no significant changes with 05 version, though. + +----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- +Changes 2001.08.03 + +1. Bug fixes + + 1.1 Even if the ospfd started with opaque capability enabled, when + the ospfd receives an unknown opaque-type (unregistered by the + function "ospf_register_opaque_functab()" beforehand), the LSA + was discarded. As the result, only the opaque-LSAs that have + commonly registered by opaque-capable ospf routers can be + flooded in a routing domain. + + This behavior has fixed so that arbitrary opaque-type LSAs can + be flooded among opaque-capable ospf routers. + If the ospfd has opaque-LSA capability but disabled at runtime, + received opaque-LSAs can be accepted and registered to LSDB as + is, but not be flooded to the network; those opaque LSAs will + remain in LSDB until explicitly flushed by incoming LSUpd + messages with MaxAge, or their age naturally reaches to MaxAge. + + 1.2 The function "ospf_register_opaque_functab()" did not check + if the entry corresponding to the given "lsa-type, opaque-type" + combination already exists or not. + This problem has fixed not to allow multiple registration. + + 1.3 Since type-11 (AS external) LSAs will be flooded beyond areas, + there is little relationship between "struct lsa" and "struct + area". More specifically, the pointer address "lsa->area" can + be NULL if the lsa-type is 11, thus an illegal memory access + will happen. This problem has fixed. + + 1.4 When self-originated opaque-LSAs are received via network and + if the corresponding opaque-type functions are not available + (they have already deleted) at that time, those LSAs were + dropped due to "unknown opaque-type" error. + After the problem 1.1 has fixed, those "self-originated" LSAs + were registered to LSDB and then flooded to the network, even + if the processing functions did not exist... + + After all, this problem has fixed so that those LSAs should + explicitly be flushed from the routing domain immediately, if + the processing functions cannot find at that time. + + 1.5 Some typo have fixed. + + --- EXAMPLE --- + static int + opaque_lsa_originate_callback (list funclist, void *lsa_type_dependent) + ^^^^^ + --- EXAMPLE --- + +2. Feature enhancements + + 2.1 According to the description of rfc2328 in section 10.8, any + change in the router's optional capabilities should trigger + the option re-negotiation procedures with neighbors. + + --- EXCERPT --- + If for some reason the router's optional + capabilities change, the Database Exchange procedure should be + restarted by reverting to neighbor state ExStart. + --- EXCERPT --- + + For the opaque-capability changes, this feature has implemented. + More specifically, if "ospf opaque-lsa" or "no ospf opaque-lsa" + VTY command is given at runtime, all self-originated LSAs will + be flushed immediately and then all neighbor status will be + forced to ExStart by generating SeqNumberMismatch events. + + 2.1 When we change opaque-capability dynamically (ON -> OFF -> ON), + there was no trigger at "OFF->ON" timing to reactivate opaque + LSA handling modules (such as MPLS-TE) that have once forcibly + stopped at "ON->OFF" timing. + Now this dynamic reactivation feature has added. + + 2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic + -05.txt", no significant changes with 04 version, though. + +----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- +Changes 2001.03.28 + + Initial release of Opaque-LSA/MPLS-TE extensions for the zebra/ospfd. diff --git a/doc/mpls/cli_summary.txt b/doc/mpls/cli_summary.txt new file mode 100644 index 00000000..c60d0aed --- /dev/null +++ b/doc/mpls/cli_summary.txt @@ -0,0 +1,90 @@ +Summary of CLI commands, expanded for Opaque-LSA/MPLS-TE. +--------------------------------------------------------- + +router> + + show ip ospf database (asbr-summary|external|max-age|network|router|self-originate|summary|opaque-link|opaque-area|opaque-external) + + show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) (self-originate|) + + show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D + + show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D (self-originate|) + + show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) A.B.C.D adv-router A.B.C.D + + show ip ospf database (asbr-summary|external|network|router|summary|opaque-link|opaque-area|opaque-external) adv-router A.B.C.D + + --> Add database items: opaque-link, opaque-area, opaque-external + + show mpls-te interface [INTERFACE] + + --> Show current MPLS-TE link-TLV parameters. + If [INTERFACE] is omitted, all interfaces will be displayed. + + show mpls-te router + + --> Show current MPLS-TE Router-TLV parameters. + +router> enable +router# +router# configure terminal +router(config)# interface [INTERFACE] +router(config-if)# + + mpls-te link max-bw BANDWIDTH + + --> Set MPLS-TE link-TLV parameter: Maximum Bandwidth (Bytes/sec). + In integer or floating point format (1000, or 1.0e3) + + mpls-te link max-rsv-bw BANDWIDTH + + --> Set MPLS-TE link-TLV parameter: Maximum Reservable Bandwidth (Bytes/sec). + In integer or floating point format (1000, or 1.0e3) + + mpls-te link metric <0-4294967295> + + --> Set MPLS-TE link-TLV parameter: MPLS-TE metric. + + mpls-te link rsc-clsclr BITPATTERN + + --> Set MPLS-TE link-TLV parameter: Resource Class/Color. + In 32-bit hexadecimal format, with leading "0x" (0x0 - 0xffffffff) + + mpls-te link unrsv-bw <0-7> BANDWIDTH + + --> Set MPLS-TE link-TLV parameter: Unreserved Bandwidth (Bytes/sec). + In integer or floating point format (1000, or 1.0e3) + +router(config-if)# exit +router(config)# router ospf +router(config-router)# + + mpls-te + + --> Enable MPLS-TE functionality. + Note that master-switch "ospf opaque-lsa" must also be specified. + + mpls-te on + + --> Alias of "mpls-te" command. + + mpls-te router-address A.B.C.D + + --> Set MPLS-TE Router-TLV parameter: Router Address. + + no mpls-te + + --> Disable MPLS-TE functionality. + + no ospf opaque-lsa + + --> Disable Opaque-LSAs capability. + This node behaves Opaque-incapable node. + + ospf opaque-lsa + + --> Enable Opaque-LSAs capability. + This is the master-switch to make this node Opaque-capable. + +router# exit diff --git a/doc/mpls/opaque_lsa.txt b/doc/mpls/opaque_lsa.txt new file mode 100644 index 00000000..7d5c7fed --- /dev/null +++ b/doc/mpls/opaque_lsa.txt @@ -0,0 +1,365 @@ +1. List of "opaque-type dependent" callback functions per LSA-type. + + <ospf_opaque_lsaN_functab> (N = 9,10,11) + | + | struct + | list struct struct + +-> +-------+ listnode listnode + | head |-----> +------+ +------ + | tail | | next |--------------------> | next + | count | /--| prev |<---------------------| prev + +-------+ | data |----+ | + |///////| +------+ | + +-------+ | + | + struct | + ospf_opaque_tabent | + +----------------------+ <--+ + | opaque_type | + +----------------------+ + | (Callback functions) | + +----------------------+ + + +2. Self-originated Opaque-LSAs per LSA-type. + +2.1 Type-11 (AS-external) Opaque-LSAs + + struct + ospf + +---> +-------------------+ + | |///////////////////| + | +-------------------+ + | | opaque | + | +-------------------+ + | |///////////////////| + | +-------------------+ + | | opaque_lsa_self |---+ + | +-------------------+ | + | |///////////////////| | + | +-------------------+ | + | | + ......|.............................|....................................... + : | | Almost common for type-9,10,11 LSA : + : | +-----------------------+ : + : | | : + : | | struct : + : | | list struct struct : + : | +-> +-------+ listnode listnode : + : | | head |-----> +------+ +------ : + : | | tail | | next |--------------------> | next : + : | | count | /--| prev |<---------------------| prev : + : | +-------+ | data |---+ | : + : | |///////| +------+ | : + : | +-------+ | : + : | | : + : | struct | : + : | opaque_info_per_type | : + : | +-------------------+ <--------+ : + : | | opaque_type | <------------+ : + : | +-------------------+ | : + : | | status | | : + : | +-------------------+ | : + : | | t_opaque_lsa_self | | : + : | +-------------------+ | : + : +-----| owner | | struct : + : +-------------------+ | ospf_opaque_tabent : + : | functab |-------------------> +---------------- : + : +-------------------+ | | opaque_type : + : | id_list |---+ | |(Callback Funcs) : + : +-------------------+ | | | : + : | | : + : +-----------------------+ | : + : | | : + : | struct | : + : | list struct | struct : + : +-> +-------+ listnode | listnode : + : | head |-----> +------+ | +------ : + : | tail | | next |--------------------> | next : + : | count | /--| prev |<---------------------| prev : + : +-------+ | data |---+ | | : + : |///////| +------+ | | : + : +-------+ | | : + : | | : + : struct | | : + : opaque_info_per_id | | : + : +-------------------+ <--------+ | : + : | opaque_id | | : + : +-------------------+ | : + : | t_opaque_lsa_self | | : + : +-------------------+ | : + : | opqctl_type |--------------+ : + : +-------------------+ : + : | lsa |---+ : + : +-------------------+ | : + : | : + : struct | : + : ospf_lsa | : + : +-------------+ <-------+ : + : |/////////////| struct : + : +-------------+ lsa_header : + : | data |--------------> +-------- : + : +-------------+ | : + : |/////////////| : + : +-------------+ : + : +--------| area | : + : | +-------------+ : + : --- |/////////////| : + : +-------------+ : + : +-----| oi | : + : | +-------------+ : + : --- : + :..........................................................................: + +2.2 Type-10 (area-local) Opaque-LSAs + + struct + ospf + +---------+ <-----------+ + |/////////| | + +---------+ | + | + struct | + ospf_area | + +--+---> +-----------------+ | + | | | top |-----+ + | | +-----------------+ + | | |/////////////////| struct + | | +-----------------+ ospf_lsa + | | | router_lsa_self |-----------> +--------- + | | +-----------------+ | + | | | opaque_lsa_self |-----+ | + | | +-----------------+ | + | | |/////////////////| | + | | +-----------------+ | + | | | + ...|..|.............................|....................................... + : | | | Almost common for type-9,10,11 LSA : + : | | +-----------------------+ : + : | | | : + : | | | struct : + : | | | list struct struct : + : | | +-> +-------+ listnode listnode : + : | | | head |-----> +------+ +------ : + : | | | tail | | next |--------------------> | next : + : | | | count | /--| prev |<---------------------| prev : + : | | +-------+ | data |---+ | : + : | | |///////| +------+ | : + : | | +-------+ | : + : | | | : + : | | struct | : + : | | opaque_info_per_type | : + : | | +-------------------+ <--------+ : + : | | | opaque_type | <------------+ : + : | | +-------------------+ | : + : | | | status | | : + : | | +-------------------+ | : + : | | | t_opaque_lsa_self | | : + : | | +-------------------+ | : + : | +-----| owner | | struct : + : | +-------------------+ | ospf_opaque_tabent : + : | | functab |-------------------> +---------------- : + : | +-------------------+ | | opaque_type : + : | | id_list |---+ | |(Callback Funcs) : + : | +-------------------+ | | | : + : | | | : + : | +-----------------------+ | : + : | | | : + : | | struct | : + : | | list struct | struct : + : | +-> +-------+ listnode | listnode : + : | | head |-----> +------+ | +------ : + : | | tail | | next |--------------------> | next : + : | | count | /--| prev |<---------------------| prev : + : | +-------+ | data |---+ | | : + : | |///////| +------+ | | : + : | +-------+ | | : + : | | | : + : | struct | | : + : | opaque_info_per_id | | : + : | +-------------------+ <--------+ | : + : | | opaque_id | | : + : | +-------------------+ | : + : | | t_opaque_lsa_self | | : + : | +-------------------+ | : + : | | opqctl_type |--------------+ : + : | +-------------------+ : + : | | lsa |---+ : + : | +-------------------+ | : + : | | : + : | struct | : + : | ospf_lsa | : + : | +-------------+ <-------+ : + : | |/////////////| struct : + : | +-------------+ lsa_header : + : | | data |--------------> +-------- : + : | +-------------+ | : + : | |/////////////| : + : | +-------------+ : + : +--------| area | : + : +-------------+ : + : |/////////////| : + : +-------------+ : + : +-----| oi | : + : | +-------------+ : + : --- : + :..........................................................................: + +2.3 Type-9 (link-local) Opaque-LSAs + + struct + ospf_area + +------> +---------+ <---------+ + | |/////////| | + | +---------+ | + | | + | struct | + | ospf_interface | + | +-+-> +-----------------+ | + | | | |/////////////////| | + | | | +-----------------+ | + | | | | area |---+ + | | | +-----------------+ + | | | |/////////////////| struct + | | | +-----------------+ ospf_lsa + | | | |network_lsa_self |-----------> +--------- + | | | +-----------------+ | + | | | | opaque_lsa_self |-----+ | + | | | +-----------------+ | + | | | |/////////////////| | + | | | +-----------------+ | + | | | | + ...|..|.|...........................|....................................... + : | | | | Almost common for type-9,10,11 LSA : + : | | | +-----------------------+ : + : | | | | : + : | | | | struct : + : | | | | list struct struct : + : | | | +-> +-------+ listnode listnode : + : | | | | head |-----> +------+ +------ : + : | | | | tail | | next |--------------------> | next : + : | | | | count | /--| prev |<---------------------| prev : + : | | | +-------+ | data |---+ | : + : | | | |///////| +------+ | : + : | | | +-------+ | : + : | | | | : + : | | | struct | : + : | | | opaque_info_per_type | : + : | | | +-------------------+ <--------+ : + : | | | | opaque_type | <------------+ : + : | | | +-------------------+ | : + : | | | | status | | : + : | | | +-------------------+ | : + : | | | | t_opaque_lsa_self | | : + : | | | +-------------------+ | : + : | | +---| owner | | struct : + : | | +-------------------+ | ospf_opaque_tabent : + : | | | functab |-------------------> +---------------- : + : | | +-------------------+ | | opaque_type : + : | | | id_list |---+ | |(Callback Funcs) : + : | | +-------------------+ | | | : + : | | | | : + : | | +-----------------------+ | : + : | | | | : + : | | | struct | : + : | | | list struct | struct : + : | | +-> +-------+ listnode | listnode : + : | | | head |-----> +------+ | +------ : + : | | | tail | | next |--------------------> | next : + : | | | count | /--| prev |<---------------------| prev : + : | | +-------+ | data |---+ | | : + : | | |///////| +------+ | | : + : | | +-------+ | | : + : | | | | : + : | | struct | | : + : | | opaque_info_per_id | | : + : | | +-------------------+ <--------+ | : + : | | | opaque_id | | : + : | | +-------------------+ | : + : | | | t_opaque_lsa_self | | : + : | | +-------------------+ | : + : | | | opqctl_type |--------------+ : + : | | +-------------------+ : + : | | | lsa |---+ : + : | | +-------------------+ | : + : | | | : + : | | struct | : + : | | ospf_lsa | : + : | | +-------------+ <-------+ : + : | | |/////////////| struct : + : | | +-------------+ lsa_header : + : | | | data |--------------> +-------- : + : | | +-------------+ | : + : | | |/////////////| : + : | | +-------------+ : + : +--|-----| area | : + : | +-------------+ : + : | |/////////////| : + : | +-------------+ : + : +-----| oi | : + : +-------------+ : + :..........................................................................: + + +3. Internal structures for MPLS-TE parameter management. + + struct + ospf_mpls_te + +-------------+ + | status | + +-------------+ + | iflist |---+ + +-------------+ | + |(Router-TLV) | | + +-------------+ | + | + +---------------------+ + | + | struct + | list struct struct + +---> +-------+ listnode listnode + | head |-----> +------+ +------ + | tail | | next |--------------------> | next + | count | /--| prev |<---------------------| prev + +-------+ | data |---+ | + |///////| +------+ | + +-------+ | + | + +--------------------------------+ + | + | struct + | ospf_mpls_te_linkparms + +-> +----------------+ + | instance | struct + +----------------+ interface + | ifp |--------------------> +----------+ + +----------------+ +----> |//////////| + | area |----+ | +----------+ + +----------------+ | | | info |-----+ + | flags | | | +----------+ | + +----------------+ | | |//////////| | + | (Link-TLV) | | | +----------+ | + +----------------+ | | | + | (Link-SubTLVs) | | | struct | + +----------------+ | | ospf_if_info | + | | +----------+ <---+ + | | |//////////| + struct | | +----------+ + ospf_area | | | oifs |-----+ + +-> +--------------+ <----+ | +----------+ | + | |//////////////| | | + | +--------------+ | struct | + | | route_table | + | struct | +-----------+ <--+ + | ospf_interface | | route_top | - - - - -. + | +--------------+ <----+ | +-----------+ . + | |//////////////| | | . + | +--------------+ | | struct . + | | ifp |------|----------+ route_node . + | +--------------+ | +-----------+ < - - - - + | |//////////////| | |///////////| + | +--------------+ | +-----------+ + +---| area | +-----------------| info | + +--------------+ +-----------+ + |//////////////| |///////////| + +--------------+ +-----------+ diff --git a/doc/mpls/ospfd.conf b/doc/mpls/ospfd.conf new file mode 100644 index 00000000..6be11f91 --- /dev/null +++ b/doc/mpls/ospfd.conf @@ -0,0 +1,75 @@ +! +! Zebra configuration saved from vty +! 2001/03/16 22:07:53 +! +hostname HOSTNAME +password PASSWORD +log file /var/log/ospfd.log +! +debug ospf ism +debug ospf nsm +debug ospf lsa +debug ospf zebra +debug ospf event +debug ospf packet all detail +! +! +interface fxp0 + ip ospf hello-interval 60 + ip ospf dead-interval 240 + mpls-te link metric 999 + mpls-te link max-bw 1.25e+06 + mpls-te link max-rsv-bw 1.25e+06 + mpls-te link unrsv-bw 0 1.25e+06 + mpls-te link unrsv-bw 1 1.25e+06 + mpls-te link unrsv-bw 2 1.25e+06 + mpls-te link unrsv-bw 3 1.25e+06 + mpls-te link unrsv-bw 4 1.25e+06 + mpls-te link unrsv-bw 5 1.25e+06 + mpls-te link unrsv-bw 6 1.25e+06 + mpls-te link unrsv-bw 7 1.25e+06 + mpls-te link rsc-clsclr 0xab +! +interface de1 + ip ospf hello-interval 60 + ip ospf dead-interval 240 + mpls-te link metric 111 + mpls-te link max-bw 1.25e+06 + mpls-te link max-rsv-bw 1.25e+06 + mpls-te link unrsv-bw 0 1.25e+06 + mpls-te link unrsv-bw 1 1.25e+06 + mpls-te link unrsv-bw 2 1.25e+06 + mpls-te link unrsv-bw 3 1.25e+06 + mpls-te link unrsv-bw 4 1.25e+06 + mpls-te link unrsv-bw 5 1.25e+06 + mpls-te link unrsv-bw 6 1.25e+06 + mpls-te link unrsv-bw 7 1.25e+06 + mpls-te link rsc-clsclr 0xcd +! +interface de0 + mpls-te link metric 0 + mpls-te link rsc-clsclr 0x0 +! +interface lp0 + ip ospf network point-to-point +! +interface tun0 + ip ospf network point-to-point +! +interface sl0 + ip ospf network point-to-point +! +interface ppp0 + ip ospf network point-to-point +! +interface lo0 +! +router ospf + compatible rfc1583 + network 192.168.0.0/16 area 1 + ospf opaque-lsa + mpls-te + mpls-te router-address 1.2.3.4 +! +line vty +! diff --git a/doc/ospfd.texi b/doc/ospfd.texi index adbf45ef..2c24a210 100644 --- a/doc/ospfd.texi +++ b/doc/ospfd.texi @@ -53,7 +53,8 @@ number. @deffnx {OSPF Command} {no ospf abr-type @var{type}} {} @var{type} can be cisco|ibm|shortcut|standard More information regarding the behaviour controlled by this command can -be found in draft-ietf-ospf-abr-alt-05.txt. +be found in draft-ietf-ospf-abr-alt-05.txt and +draft-ietf-ospf-shortcut-abr-02.txt Quote: "Though the definition of the Area Border Router (ABR) in the OSPF specification does not require a router with multiple attached areas to have a backbone connection, it is actually @@ -66,10 +67,10 @@ behaviors implemented in Cisco and IBM routers." @deffn {OSPF Command} {ospf rfc1583compatibility} {} @deffnx {OSPF Command} {no ospf rfc1583compatibility} {} -This rfc2328, the sucessor to rfc1583, suggests according to section +This rfc2328, the sucessor to rfc1583, suggests according to section G.2 (changes) in section 16.4 a change to the path preference algorithm that prevents possible routing loops that were possible in -the old version of OSPFv2. More specificly it demands that inter-area +the old version of OSPFv2. More specifically it demands that inter-area paths and intra-area path are now of equal preference but still both preferred to external paths. @end deffn diff --git a/doc/zebra.info b/doc/zebra.info index eb17a2d0..ca805e12 100644 --- a/doc/zebra.info +++ b/doc/zebra.info @@ -8,8 +8,8 @@ END-INFO-DIR-ENTRY This file documents the GNU Zebra software which manages common TCP/IP routing protocols. - This is Edition 0.1, last updated 26 January 2003 of `The GNU Zebra -Manual', for Zebra Version 0.94. + This is Edition 0.1, last updated 12 September 2002 of `The GNU +Zebra Manual', for Zebra Version 0.93b. Copyright (C) 1999, 2000, 2001, 2002 Kunihiro Ishiguro @@ -29,142 +29,142 @@ translation approved by Kunihiro Ishiguro. Indirect: -zebra.info-1: 1118 -zebra.info-2: 48813 -zebra.info-3: 96640 -zebra.info-4: 144993 +zebra.info-1: 1121 +zebra.info-2: 48818 +zebra.info-3: 95581 +zebra.info-4: 143934 Tag Table: (Indirect) -Node: Top1118 -Node: Overview1642 -Node: About Zebra3059 -Node: System Architecture5328 -Node: Supported Platforms8326 -Node: Supported RFC9313 -Node: How to get Zebra11115 -Node: Mailing List11820 -Node: Bug Reports12487 -Node: Installation13332 -Node: Configure the Software13763 -Ref: Configure the Software-Footnote-116130 -Node: Build the Software17772 -Node: Install the Software18314 -Node: Basic commands19685 -Node: Config Commands20398 -Node: Basic Config Commands21280 -Node: Sample Config File23678 -Node: Common Invocation Options24438 -Node: Virtual Terminal Interfaces25560 -Node: VTY Overview26065 -Node: VTY Modes27348 -Node: VTY View Mode27788 -Node: VTY Enable Mode28042 -Node: VTY Other Modes28306 -Node: VTY CLI Commands28468 -Node: CLI Movement Commands28918 -Node: CLI Editing Commands29451 -Node: CLI Advanced Commands30024 -Node: Zebra30775 -Node: Invoking zebra31282 -Node: Interface Commands31868 -Node: Static Route Commands32698 -Node: zebra Terminal Mode Commands34785 -Node: RIP35746 -Node: Starting and Stopping ripd36681 -Node: RIP netmask38102 -Node: RIP Configuration39224 -Node: How to Announce RIP route43119 -Node: Filtering RIP Routes45648 -Node: RIP Metric Manipulation47107 -Node: RIP distance48010 -Node: RIP route-map48813 -Node: RIP Authentication51315 -Node: RIP Timers52405 -Node: Show RIP Information53680 -Node: RIP Debug Commands55043 -Node: RIPng56027 -Node: Invoking ripngd56345 -Node: ripngd Configuration56602 -Node: ripngd Terminal Mode Commands57341 -Node: ripngd Filtering Commands57691 -Node: OSPFv258190 -Node: Configuring ospfd58747 -Node: OSPF router59224 -Node: OSPF area62019 -Node: OSPF interface64233 -Node: Redistribute routes to OSPF67015 -Node: Showing OSPF information69131 -Node: Debugging OSPF70351 -Node: OSPFv371362 -Node: OSPF6 router71680 -Node: OSPF6 area72037 -Node: OSPF6 interface72209 -Node: Redistribute routes to OSPF673061 -Node: Showing OSPF6 information73365 -Node: BGP74170 -Node: Starting BGP75031 -Node: BGP router75616 -Node: BGP distance76852 -Node: BGP decision process77293 -Node: BGP network77549 -Node: BGP route77730 -Node: Route Aggregation78291 -Node: Redistribute to BGP78843 -Node: BGP Peer79352 -Node: Defining Peer79530 -Node: BGP Peer commands80146 -Node: Peer filtering82517 -Node: BGP Peer Group83008 -Node: BGP Address Family83310 -Node: Autonomous System83455 -Node: AS Path Regular Expression84286 -Node: Display BGP Routes by AS Path85549 -Node: AS Path Access List85978 -Node: Using AS Path in Route Map86432 -Node: Private AS Numbers86698 -Node: BGP Communities Attribute86843 -Node: BGP Community Lists89304 -Node: Numbered BGP Community Lists91985 -Node: BGP Community in Route Map93559 -Node: Display BGP Routes by Community95486 -Node: Using BGP Communities Attribute96640 -Node: BGP Extended Communities Attribute100198 -Node: BGP Extended Community Lists101964 -Node: BGP Extended Communities in Route Map103865 -Node: Displaying BGP routes104308 -Node: Show IP BGP104534 -Node: More Show IP BGP105256 -Node: Capability Negotiation106376 -Node: Route Reflector109664 -Node: Route Server109929 -Node: Multiple instance110987 -Node: BGP instance and view112800 -Node: Routing policy114166 -Node: Viewing the view114922 -Node: How to set up a 6-Bone connection115194 -Node: Dump BGP packets and table116566 -Node: VTY shell117096 -Node: Filtering117936 -Node: IP Access List118284 -Node: IP Prefix List118675 -Node: ip prefix-list description121844 -Node: ip prefix-list sequential number control122377 -Node: Showing ip prefix-list122902 -Node: Clear counter of ip prefix-list123985 -Node: Route Map124406 -Node: Route Map Command124907 -Node: Route Map Match Command125110 -Node: Route Map Set Command125718 -Node: IPv6 Support126576 -Node: Router Advertisement127141 -Node: Kernel Interface127472 -Node: SNMP Support129422 -Node: How to get ucd-snmp130051 -Node: SMUX configuration131099 -Node: Zebra Protocol131532 -Node: Packet Binary Dump Format133426 -Node: Command Index144993 -Node: VTY Key Index174711 +Node: Top1121 +Node: Overview1646 +Node: About Zebra3063 +Node: System Architecture5332 +Node: Supported Platforms8330 +Node: Supported RFC9317 +Node: How to get Zebra11119 +Node: Mailing List11824 +Node: Bug Reports12491 +Node: Installation13336 +Node: Configure the Software13767 +Ref: Configure the Software-Footnote-116134 +Node: Build the Software17776 +Node: Install the Software18318 +Node: Basic commands19689 +Node: Config Commands20402 +Node: Basic Config Commands21284 +Node: Sample Config File23682 +Node: Common Invocation Options24442 +Node: Virtual Terminal Interfaces25564 +Node: VTY Overview26069 +Node: VTY Modes27353 +Node: VTY View Mode27793 +Node: VTY Enable Mode28047 +Node: VTY Other Modes28311 +Node: VTY CLI Commands28473 +Node: CLI Movement Commands28923 +Node: CLI Editing Commands29456 +Node: CLI Advanced Commands30029 +Node: Zebra30780 +Node: Invoking zebra31287 +Node: Interface Commands31873 +Node: Static Route Commands32703 +Node: zebra Terminal Mode Commands34790 +Node: RIP35751 +Node: Starting and Stopping ripd36686 +Node: RIP netmask38107 +Node: RIP Configuration39229 +Node: How to Announce RIP route43124 +Node: Filtering RIP Routes45653 +Node: RIP Metric Manipulation47112 +Node: RIP distance48015 +Node: RIP route-map48818 +Node: RIP Authentication51320 +Node: RIP Timers52410 +Node: Show RIP Information53685 +Node: RIP Debug Commands55048 +Node: RIPng56032 +Node: Invoking ripngd56350 +Node: ripngd Configuration56607 +Node: ripngd Terminal Mode Commands57346 +Node: ripngd Filtering Commands57696 +Node: OSPFv258195 +Node: Configuring ospfd58752 +Node: OSPF router59229 +Node: OSPF area60960 +Node: OSPF interface63174 +Node: Redistribute routes to OSPF65956 +Node: Showing OSPF information68072 +Node: Debugging OSPF69292 +Node: OSPFv370303 +Node: OSPF6 router70621 +Node: OSPF6 area70978 +Node: OSPF6 interface71150 +Node: Redistribute routes to OSPF672002 +Node: Showing OSPF6 information72306 +Node: BGP73111 +Node: Starting BGP73972 +Node: BGP router74557 +Node: BGP distance75793 +Node: BGP decision process76234 +Node: BGP network76490 +Node: BGP route76671 +Node: Route Aggregation77232 +Node: Redistribute to BGP77784 +Node: BGP Peer78293 +Node: Defining Peer78471 +Node: BGP Peer commands79087 +Node: Peer filtering81458 +Node: BGP Peer Group81949 +Node: BGP Address Family82251 +Node: Autonomous System82396 +Node: AS Path Regular Expression83227 +Node: Display BGP Routes by AS Path84490 +Node: AS Path Access List84919 +Node: Using AS Path in Route Map85373 +Node: Private AS Numbers85639 +Node: BGP Communities Attribute85784 +Node: BGP Community Lists88245 +Node: Numbered BGP Community Lists90926 +Node: BGP Community in Route Map92500 +Node: Display BGP Routes by Community94427 +Node: Using BGP Communities Attribute95581 +Node: BGP Extended Communities Attribute99139 +Node: BGP Extended Community Lists100905 +Node: BGP Extended Communities in Route Map102806 +Node: Displaying BGP routes103249 +Node: Show IP BGP103475 +Node: More Show IP BGP104197 +Node: Capability Negotiation105317 +Node: Route Reflector108605 +Node: Route Server108870 +Node: Multiple instance109928 +Node: BGP instance and view111741 +Node: Routing policy113107 +Node: Viewing the view113863 +Node: How to set up a 6-Bone connection114135 +Node: Dump BGP packets and table115507 +Node: VTY shell116037 +Node: Filtering116877 +Node: IP Access List117225 +Node: IP Prefix List117616 +Node: ip prefix-list description120785 +Node: ip prefix-list sequential number control121318 +Node: Showing ip prefix-list121843 +Node: Clear counter of ip prefix-list122926 +Node: Route Map123347 +Node: Route Map Command123848 +Node: Route Map Match Command124051 +Node: Route Map Set Command124659 +Node: IPv6 Support125517 +Node: Router Advertisement126082 +Node: Kernel Interface126413 +Node: SNMP Support128363 +Node: How to get ucd-snmp128992 +Node: SMUX configuration130040 +Node: Zebra Protocol130473 +Node: Packet Binary Dump Format132367 +Node: Command Index143934 +Node: VTY Key Index173652 End Tag Table diff --git a/doc/zebra.texi b/doc/zebra.texi index 965e0590..d09ff4d6 100644 --- a/doc/zebra.texi +++ b/doc/zebra.texi @@ -9,9 +9,9 @@ @c Set variables @set EDITION 0.1 -@set VERSION 0.94 -@set UPDATED 26 January 2003 -@set UPDATED-MONTH January 2003 +@set VERSION 0.93b +@set UPDATED 12 September 2002 +@set UPDATED-MONTH September 2002 @c These may vary with installation environment. @set INSTALL_PREFIX_ETC /usr/local/etc diff --git a/guile/.cvsignore b/guile/.cvsignore index bdcccd62..d03f2388 100644 --- a/guile/.cvsignore +++ b/guile/.cvsignore @@ -1,3 +1,4 @@ Makefile *.o zebra-guile +Makefile.in diff --git a/init/ChangeLog b/init/ChangeLog deleted file mode 100644 index 90d3d248..00000000 --- a/init/ChangeLog +++ /dev/null @@ -1,39 +0,0 @@ -2001-08-19 Kunihiro Ishiguro <kunihiro@ipinfusion.com> - - * zebra-0.92a released - -2001-08-15 Kunihiro Ishiguro <kunihiro@ipinfusion.com> - - * zebra-0.92 released. - -2001-02-01 Kunihiro Ishiguro <kunihiro@zebra.org> - - * zebra-0.91 is released. - -2001-01-09 Kunihiro Ishiguro <kunihiro@zebra.org> - - * zebra-0.90 is released. - -2000-11-06 Lennert Buytenhek <buytenh@gnu.org> - - * redhat/zebra.spec.in: Don't include ospf6d and ripngd in - package. - - * redhat/zebra.logrotate: Fix logrotate file (add ospf.log). - -2000-10-02 Horms <horms@vergenet.net> - - * redhat/zebra.spec.in: Moved chkconfig --del operations from - %postun to %preun, as chkconfig needs to run while the init files - are still present on the system. - - * redhat/zebra.logrotate: New file is added. - -2000-09-18 Lennert Buytenhek <buytenh@gnu.org> - - * redhat/zebra.spec.in: New file is added. - redhat/ripd.init: Likewise. - redhat/ripngd.init: Likewise. - redhat/ospfd.init: Likewise. - redhat/ospf6d.init: Likewise. - redhat/bgpd.init: Likewise. diff --git a/init/redhat/zebra.logrotate b/init/redhat/zebra.logrotate deleted file mode 100644 index 0d13baf7..00000000 --- a/init/redhat/zebra.logrotate +++ /dev/null @@ -1,47 +0,0 @@ -/var/log/zebra/zebra.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 zebra - endscript -} - -/var/log/zebra/bgpd.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 bgpd - endscript -} - -/var/log/zebra/ospf.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 ospfd - endscript -} - -/var/log/zebra/ospf6.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 ospf6d - endscript -} - -/var/log/zebra/rip.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 ripd - endscript -} - -/var/log/zebra/ripng.log { - notifempty - missingok - postrotate - /usr/bin/killall -USR1 ripng - endscript -} diff --git a/init/redhat/zebra.spec.in b/init/redhat/zebra.spec.in deleted file mode 100644 index e517a46f..00000000 --- a/init/redhat/zebra.spec.in +++ /dev/null @@ -1,128 +0,0 @@ -%define version @VERSION@ - -Summary: Zebra routing engine -Name: zebra -Version: %{version} -Release: 1 -Source: zebra-%{version}.tar.gz -URL: http://www.zebra.org -Copyright: GPL -Group: System Environment/Daemons -BuildRoot: /tmp/zebra-%{version}-root - -%description -GNU Zebra is free software (distributed under GNU Generic Public License) -that manages TCP/IP based routing protocols. It supports BGP-4 protocol as -described in RFC1771 (A Border Gateway Protocol 4) as well as RIPv1, RIPv2 -and OSPFv2. Unlike traditional, Gated based, monolithic architectures and -even the so-called "new modular architectures" that remove the burden of -processing routing functions from the cpu and utilize special ASIC chips -instead, Zebra software offers true modularity. - -%prep -%setup - -%build -#./configure --enable-snmp --prefix=/usr --sysconfdir=/etc -./configure --prefix=/usr --sysconfdir=/etc -make - -%install -rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install -rm -f $RPM_BUILD_ROOT/usr/info/dir -rm -f $RPM_BUILD_ROOT/usr/man/man8/ospf6* -rm -f $RPM_BUILD_ROOT/usr/man/man8/ripng* -rm -f $RPM_BUILD_ROOT/usr/sbin/ospf6d -rm -f $RPM_BUILD_ROOT/usr/sbin/ripngd -strip $RPM_BUILD_ROOT/usr/sbin/* - -mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d -install -m755 init/redhat/bgpd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/bgpd -#install -m755 init/redhat/ospf6d.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ospf6d -install -m755 init/redhat/ospfd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ospfd -install -m755 init/redhat/ripd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ripd -#install -m755 init/redhat/ripngd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ripngd -install -m755 init/redhat/zebra.init $RPM_BUILD_ROOT/etc/rc.d/init.d/zebra - -mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d -install -m644 init/redhat/zebra.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/zebra - - -%post -# zebra_spec_add_service <sercice name> <port/proto> <comment> -# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service" - -zebra_spec_add_service () -{ - # Add port /etc/services entry if it isn't already there - if [ -f /etc/services ] && ! grep -q "^$1[^a-zA-Z0-9]" /etc/services ; then - echo "$1 $2 # $3" >> /etc/services - fi -} - -zebra_spec_add_service zebrasrv 2600/tcp "zebra service" -zebra_spec_add_service zebra 2601/tcp "zebra vty" -zebra_spec_add_service ripd 2602/tcp "RIPd vty" -zebra_spec_add_service ripngd 2603/tcp "RIPngd vty" -zebra_spec_add_service ospfd 2604/tcp "OSPFd vty" -zebra_spec_add_service bgpd 2605/tcp "BGPd vty" -zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty" - -#Install info -/sbin/install-info /usr/info/zebra.info /usr/info/dir - -if [ -x /sbin/chkconfig ]; then - chkconfig --add bgpd -# chkconfig --add ospf6d - chkconfig --add ospfd - chkconfig --add ripd -# chkconfig --add ripngd - chkconfig --add zebra -fi - - -%preun -if [ "$1" = 0 ] ; then - /sbin/install-info --delete /usr/info/zebra.info /usr/info/dir - - if [ -x /sbin/chkconfig ]; then - chkconfig --del bgpd -# chkconfig --del ospf6d - chkconfig --del ospfd - chkconfig --del ripd -# chkconfig --del ripngd - chkconfig --del zebra - fi -fi - -%clean -rm -rf $RPM_BUILD_ROOT -rm -rf $RPM_BUILD_DIR/%{name}-%{version} - -%files -%attr(-,root,root) %doc AUTHORS COPYING ChangeLog INSTALL NEWS README SERVICES TODO bgpd/bgpd.conf.sample ospfd/ospfd.conf.sample ripd/ripd.conf.sample zebra/zebra.conf.sample -%attr(-,root,root) %config /etc/rc.d/init.d/* -%attr(-,root,root) %config /etc/logrotate.d/* -%attr(-,root,root) /usr/info/* -#%attr(-,root,root) /usr/man/* # Not man1 to exclude vtysh man page as - # it is not build by default (for now) -%attr(-,root,root) /usr/man/man8/* -%attr(-,root,root) /usr/sbin/* - -%changelog -* Mon Nov 6 2000 Lennert Buytenhek <buytenh@gnu.org> -- Don't include ospf6d and ripngd in package. -- Fix logrotate file (add ospf.log). -* Mon Oct 2 2000 Horms <horms@valinux.com> -- Install and uninstall info in %post and %preun respectively -- Moved chkconfig --del operations from %postun to %preun, as - chkconfig needs to run while the init files are still present on - the system. -- Don't install vtysh man page as vtysh is not build by default -- Added logrotate script so logs won't grow without bound -* Wed Sep 27 2000 Horms <horms@vergenet.net> -- Add ports to /etc/services if they aren't there -- forcibly remove $RPM_BUILD_ROOT/usr/info/dir and friends so - there is no error if it does not exist when rm is run. -- Clean up the zebra build dir diff --git a/lib/.cvsignore b/lib/.cvsignore index 051b8e4f..b8e258be 100644 --- a/lib/.cvsignore +++ b/lib/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o version.c .deps diff --git a/lib/ChangeLog b/lib/ChangeLog index b4d0ae12..71fb42c3 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,16 @@ +2003-05-24 Anil Madhavapeddy + + * (sockunion.c): Incorrect bounds specified in sockunion_log() + +2003-05-08 Sergiy Vyshnevetskiy <serg @ vostok.net> + + * vty.c: -A option + +2003-04-19 Hasso Tepper <hasso@estpak.ee> + + * rip_routemap.c: sync daemon's route-map commands to have same + syntax + 2002-09-28 Yasuhiro Ohara <yasu@sfc.wide.ad.jp> * vty.c (vty_flush): One line more on vty. diff --git a/lib/Makefile.am b/lib/Makefile.am index d041770d..02680603 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -10,9 +10,9 @@ libzebra_a_SOURCES = \ print_version.c checksum.c vector.c linklist.c vty.c command.c \ sockunion.c prefix.c thread.c if.c memory.c buffer.c table.c hash.c \ filter.c routemap.c distribute.c stream.c str.c log.c plist.c \ - zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c privs.c debug.c + zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c -libzebra_a_DEPENDENCIES = @LIB_REGEX@ @LIBCAP@ +libzebra_a_DEPENDENCIES = @LIB_REGEX@ libzebra_a_LIBADD = @LIB_REGEX@ @@ -20,8 +20,7 @@ noinst_HEADERS = \ buffer.h command.h filter.h getopt.h hash.h if.h linklist.h log.h \ memory.h network.h prefix.h routemap.h distribute.h sockunion.h \ str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \ - plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h \ - privs.h debug.h + plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h EXTRA_DIST = regex.c regex-gnu.h diff --git a/lib/Makefile.in b/lib/Makefile.in deleted file mode 100644 index 3ea28bf5..00000000 --- a/lib/Makefile.in +++ /dev/null @@ -1,399 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" - -noinst_LIBRARIES = libzebra.a - -libzebra_a_SOURCES = \ - version.c network.c pid_output.c getopt.c getopt1.c daemon.c \ - print_version.c checksum.c vector.c linklist.c vty.c command.c \ - sockunion.c prefix.c thread.c if.c memory.c buffer.c table.c hash.c \ - filter.c routemap.c distribute.c stream.c str.c log.c plist.c \ - zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c - - -libzebra_a_DEPENDENCIES = @LIB_REGEX@ - -libzebra_a_LIBADD = @LIB_REGEX@ - -noinst_HEADERS = \ - buffer.h command.h filter.h getopt.h hash.h if.h linklist.h log.h \ - memory.h network.h prefix.h routemap.h distribute.h sockunion.h \ - str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \ - plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h - - -EXTRA_DIST = regex.c regex-gnu.h -subdir = lib -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libzebra_a_AR = $(AR) cru -am_libzebra_a_OBJECTS = version.$(OBJEXT) network.$(OBJEXT) \ - pid_output.$(OBJEXT) getopt.$(OBJEXT) getopt1.$(OBJEXT) \ - daemon.$(OBJEXT) print_version.$(OBJEXT) checksum.$(OBJEXT) \ - vector.$(OBJEXT) linklist.$(OBJEXT) vty.$(OBJEXT) \ - command.$(OBJEXT) sockunion.$(OBJEXT) prefix.$(OBJEXT) \ - thread.$(OBJEXT) if.$(OBJEXT) memory.$(OBJEXT) buffer.$(OBJEXT) \ - table.$(OBJEXT) hash.$(OBJEXT) filter.$(OBJEXT) \ - routemap.$(OBJEXT) distribute.$(OBJEXT) stream.$(OBJEXT) \ - str.$(OBJEXT) log.$(OBJEXT) plist.$(OBJEXT) zclient.$(OBJEXT) \ - sockopt.$(OBJEXT) smux.$(OBJEXT) md5.$(OBJEXT) \ - if_rmap.$(OBJEXT) keychain.$(OBJEXT) -libzebra_a_OBJECTS = $(am_libzebra_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/buffer.Po ./$(DEPDIR)/checksum.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/command.Po ./$(DEPDIR)/daemon.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/distribute.Po ./$(DEPDIR)/filter.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/getopt.Po ./$(DEPDIR)/getopt1.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/hash.Po ./$(DEPDIR)/if.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/if_rmap.Po ./$(DEPDIR)/keychain.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/linklist.Po ./$(DEPDIR)/log.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/md5.Po ./$(DEPDIR)/memory.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/network.Po ./$(DEPDIR)/pid_output.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/plist.Po ./$(DEPDIR)/prefix.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/print_version.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/routemap.Po ./$(DEPDIR)/smux.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/sockopt.Po ./$(DEPDIR)/sockunion.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/str.Po ./$(DEPDIR)/stream.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/table.Po ./$(DEPDIR)/thread.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/vector.Po ./$(DEPDIR)/version.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/vty.Po ./$(DEPDIR)/zclient.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libzebra_a_SOURCES) -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(libzebra_a_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign lib/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libzebra.a: $(libzebra_a_OBJECTS) $(libzebra_a_DEPENDENCIES) - -rm -f libzebra.a - $(libzebra_a_AR) libzebra.a $(libzebra_a_OBJECTS) $(libzebra_a_LIBADD) - $(RANLIB) libzebra.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daemon.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/distribute.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if_rmap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keychain.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linklist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pid_output.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockopt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockunion.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zclient.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(HEADERS) - -installdirs: - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES distclean distclean-compile \ - distclean-depend distclean-generic distclean-tags distdir dvi \ - dvi-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am - - -version.c: Makefile - echo '' >version.c - echo 'char *host_name = "$(host_alias)";' >>version.c -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/lib/distribute.c b/lib/distribute.c index d5893a5b..59dbc5a4 100644 --- a/lib/distribute.c +++ b/lib/distribute.c @@ -327,6 +327,14 @@ DEFUN (distribute_list_all, return CMD_SUCCESS; } +ALIAS (distribute_list_all, + ipv6_distribute_list_all_cmd, + "distribute-list WORD (in|out)", + "Filter networks in routing updates\n" + "Access-list name\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n") + DEFUN (no_distribute_list_all, no_distribute_list_all_cmd, "no distribute-list WORD (in|out)", @@ -360,6 +368,15 @@ DEFUN (no_distribute_list_all, return CMD_SUCCESS; } +ALIAS (no_distribute_list_all, + no_ipv6_distribute_list_all_cmd, + "no distribute-list WORD (in|out)", + NO_STR + "Filter networks in routing updates\n" + "Access-list name\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n") + DEFUN (distribute_list, distribute_list_cmd, "distribute-list WORD (in|out) WORD", @@ -389,6 +406,15 @@ DEFUN (distribute_list, return CMD_SUCCESS; } +ALIAS (distribute_list, + ipv6_distribute_list_cmd, + "distribute-list WORD (in|out) WORD", + "Filter networks in routing updates\n" + "Access-list name\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n" + "Interface name\n") + DEFUN (no_districute_list, no_distribute_list_cmd, "no distribute-list WORD (in|out) WORD", NO_STR @@ -421,6 +447,15 @@ DEFUN (no_districute_list, no_distribute_list_cmd, return CMD_SUCCESS; } +ALIAS (no_districute_list, no_ipv6_distribute_list_cmd, + "no distribute-list WORD (in|out) WORD", + NO_STR + "Filter networks in routing updates\n" + "Access-list name\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n" + "Interface name\n") + DEFUN (districute_list_prefix_all, distribute_list_prefix_all_cmd, "distribute-list prefix WORD (in|out)", @@ -451,6 +486,15 @@ DEFUN (districute_list_prefix_all, return CMD_SUCCESS; } +ALIAS (districute_list_prefix_all, + ipv6_distribute_list_prefix_all_cmd, + "distribute-list prefix WORD (in|out)", + "Filter networks in routing updates\n" + "Filter prefixes in routing updates\n" + "Name of an IP prefix-list\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n") + DEFUN (no_districute_list_prefix_all, no_distribute_list_prefix_all_cmd, "no distribute-list prefix WORD (in|out)", @@ -485,6 +529,16 @@ DEFUN (no_districute_list_prefix_all, return CMD_SUCCESS; } +ALIAS (no_districute_list_prefix_all, + no_ipv6_distribute_list_prefix_all_cmd, + "no distribute-list prefix WORD (in|out)", + NO_STR + "Filter networks in routing updates\n" + "Filter prefixes in routing updates\n" + "Name of an IP prefix-list\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n") + DEFUN (districute_list_prefix, distribute_list_prefix_cmd, "distribute-list prefix WORD (in|out) WORD", "Filter networks in routing updates\n" @@ -515,6 +569,15 @@ DEFUN (districute_list_prefix, distribute_list_prefix_cmd, return CMD_SUCCESS; } +ALIAS (districute_list_prefix, ipv6_distribute_list_prefix_cmd, + "distribute-list prefix WORD (in|out) WORD", + "Filter networks in routing updates\n" + "Filter prefixes in routing updates\n" + "Name of an IP prefix-list\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n" + "Interface name\n") + DEFUN (no_districute_list_prefix, no_distribute_list_prefix_cmd, "no distribute-list prefix WORD (in|out) WORD", NO_STR @@ -549,6 +612,16 @@ DEFUN (no_districute_list_prefix, no_distribute_list_prefix_cmd, return CMD_SUCCESS; } +ALIAS (no_districute_list_prefix, no_ipv6_distribute_list_prefix_cmd, + "no distribute-list prefix WORD (in|out) WORD", + NO_STR + "Filter networks in routing updates\n" + "Filter prefixes in routing updates\n" + "Name of an IP prefix-list\n" + "Filter incoming routing updates\n" + "Filter outgoing routing updates\n" + "Interface name\n") + int config_show_distribute (struct vty *vty) { @@ -695,15 +768,23 @@ distribute_list_init (int node) { disthash = hash_create (distribute_hash_make, distribute_cmp); - install_element (node, &distribute_list_all_cmd); - install_element (node, &no_distribute_list_all_cmd); - - install_element (node, &distribute_list_cmd); - install_element (node, &no_distribute_list_cmd); - - install_element (node, &distribute_list_prefix_all_cmd); - install_element (node, &no_distribute_list_prefix_all_cmd); - - install_element (node, &distribute_list_prefix_cmd); - install_element (node, &no_distribute_list_prefix_cmd); + if(node==RIP_NODE) { + install_element (RIP_NODE, &distribute_list_all_cmd); + install_element (RIP_NODE, &no_distribute_list_all_cmd); + install_element (RIP_NODE, &distribute_list_cmd); + install_element (RIP_NODE, &no_distribute_list_cmd); + install_element (RIP_NODE, &distribute_list_prefix_all_cmd); + install_element (RIP_NODE, &no_distribute_list_prefix_all_cmd); + install_element (RIP_NODE, &distribute_list_prefix_cmd); + install_element (RIP_NODE, &no_distribute_list_prefix_cmd); + } else { + install_element (RIPNG_NODE, &ipv6_distribute_list_all_cmd); + install_element (RIPNG_NODE, &no_ipv6_distribute_list_all_cmd); + install_element (RIPNG_NODE, &ipv6_distribute_list_cmd); + install_element (RIPNG_NODE, &no_ipv6_distribute_list_cmd); + install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_all_cmd); + install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_all_cmd); + install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_cmd); + install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_cmd); + } } @@ -189,11 +189,13 @@ if_lookup_address (struct in_addr src) listnode node; struct prefix addr; struct prefix best; + struct prefix peer; listnode cnode; struct interface *ifp; struct prefix *p; struct connected *c; struct interface *match; + int prefixlen; /* Zero structures - get rid of rubbish from stack */ memset(&addr, 0, sizeof(addr)); @@ -212,34 +214,24 @@ if_lookup_address (struct in_addr src) for (cnode = listhead (ifp->connected); cnode; nextnode (cnode)) { c = getdata (cnode); + p = c->address; - if (if_is_pointopoint (ifp)) + if (p->family == AF_INET) { - p = c->address; + prefixlen = p->prefixlen; - if (p && p->family == AF_INET) + if (if_is_pointopoint (ifp) || + prefixlen >= IPV4_MAX_PREFIXLEN - 1) { -#ifdef OLD_RIB /* PTP links are conventionally identified - by the address of the far end - MAG */ - if (IPV4_ADDR_SAME (&p->u.prefix4, &src)) - return ifp; -#endif - p = c->destination; - if (p && IPV4_ADDR_SAME (&p->u.prefix4, &src)) - return ifp; + peer = *c->destination; + peer.prefixlen = prefixlen; + p = &peer; } - } - else - { - p = c->address; - if (p->family == AF_INET) + if (prefix_match (p, &addr) && prefixlen > best.prefixlen) { - if (prefix_match (p, &addr) && p->prefixlen > best.prefixlen) - { - best = *p; - match = ifp; - } + best = *p; + match = ifp; } } } @@ -270,6 +262,22 @@ if_is_up (struct interface *ifp) return ifp->flags & IFF_UP; } +/* Is interface running? */ +int +if_is_running (struct interface *ifp) +{ + return ifp->flags & IFF_RUNNING; +} + +/* Is the interface operative, eg. either UP & RUNNING + or UP & !ZEBRA_INTERFACE_LINK_DETECTION */ +int +if_is_operative (struct interface *ifp) +{ + return ((ifp->flags & IFF_UP) && + (ifp->flags & IFF_RUNNING || !CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION))); +} + /* Is this loopback interface ? */ int if_is_loopback (struct interface *ifp) @@ -432,6 +440,36 @@ DEFUN (interface, return CMD_SUCCESS; } +DEFUN_NOSH (no_interface, + no_interface_cmd, + "no interface IFNAME", + NO_STR + "Delete a pseudo interface's configuration\n" + "Interface's name\n") +{ + // deleting interface + struct interface *ifp; + + ifp = if_lookup_by_name (argv[0]); + + if (ifp == NULL) + { + vty_out (vty, "%% Inteface %s does not exist%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + + if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) + { + vty_out (vty, "%% Only inactive interfaces can be deleted%s", + VTY_NEWLINE); + return CMD_WARNING; + } + + if_delete(ifp); + + return CMD_SUCCESS; +} + /* For debug purpose. */ DEFUN (show_address, show_address_cmd, @@ -553,6 +591,65 @@ connected_delete_by_prefix (struct interface *ifp, struct prefix *p) return NULL; } +/* Find the IPv4 address on our side that will be used when packets + are sent to dst. */ +struct connected * +connected_lookup_address (struct interface *ifp, struct in_addr dst) +{ + struct prefix addr; + struct prefix best; + listnode cnode; + struct prefix *p; + struct connected *c; + struct connected *match; + + /* Zero structures - get rid of rubbish from stack */ + memset(&addr, 0, sizeof(addr)); + memset(&best, 0, sizeof(best)); + + addr.family = AF_INET; + addr.u.prefix4 = dst; + addr.prefixlen = IPV4_MAX_BITLEN; + + match = NULL; + + for (cnode = listhead (ifp->connected); cnode; nextnode (cnode)) + { + c = getdata (cnode); + + if (if_is_pointopoint (ifp)) + { + p = c->address; + + if (p && p->family == AF_INET) + { +#ifdef OLD_RIB /* PTP links are conventionally identified + by the address of the far end - MAG */ + if (IPV4_ADDR_SAME (&p->u.prefix4, &dst)) + return c; +#endif + p = c->destination; + if (p && IPV4_ADDR_SAME (&p->u.prefix4, &dst)) + return c; + } + } + else + { + p = c->address; + + if (p->family == AF_INET) + { + if (prefix_match (p, &addr) && p->prefixlen > best.prefixlen) + { + best = *p; + match = c; + } + } + } + } + return match; +} + /* Check the connected information is PtP style or not. */ int ifc_pointopoint (struct connected *ifc) @@ -85,6 +85,7 @@ struct interface u_char status; #define ZEBRA_INTERFACE_ACTIVE (1 << 0) #define ZEBRA_INTERFACE_SUB (1 << 1) +#define ZEBRA_INTERFACE_LINKDETECTION (1 << 2) /* Interface flags. */ unsigned long flags; @@ -188,6 +189,8 @@ struct interface *if_lookup_address (struct in_addr); struct interface *if_get_by_name (char *); void if_delete (struct interface *); int if_is_up (struct interface *); +int if_is_running (struct interface *); +int if_is_operative (struct interface *); int if_is_loopback (struct interface *); int if_is_broadcast (struct interface *); int if_is_pointopoint (struct interface *); @@ -202,6 +205,7 @@ struct connected *connected_new (); void connected_free (struct connected *); void connected_add (struct interface *, struct connected *); struct connected *connected_delete_by_prefix (struct interface *, struct prefix *); +struct connected *connected_lookup_address (struct interface *, struct in_addr); int ifc_pointopoint (struct connected *); #ifndef HAVE_IF_NAMETOINDEX @@ -216,6 +220,7 @@ extern list iflist; extern struct cmd_element interface_desc_cmd; extern struct cmd_element no_interface_desc_cmd; extern struct cmd_element interface_cmd; +extern struct cmd_element no_interface_cmd; extern struct cmd_element interface_pseudo_cmd; extern struct cmd_element no_interface_pseudo_cmd; diff --git a/lib/linklist.c b/lib/linklist.c index 5a2b6969..3cb10caf 100644 --- a/lib/linklist.c +++ b/lib/linklist.c @@ -162,6 +162,7 @@ listnode_delete (struct list *list, void *val) { struct listnode *node; + assert(list); for (node = list->head; node; node = node->next) { if (node->data == val) @@ -189,6 +190,7 @@ listnode_head (struct list *list) { struct listnode *node; + assert(list); node = list->head; if (node) @@ -203,6 +205,7 @@ list_delete_all_node (struct list *list) struct listnode *node; struct listnode *next; + assert(list); for (node = list->head; node; node = next) { next = node->next; @@ -221,6 +224,7 @@ list_delete (struct list *list) struct listnode *node; struct listnode *next; + assert(list); for (node = list->head; node; node = next) { next = node->next; @@ -237,6 +241,7 @@ listnode_lookup (struct list *list, void *data) { listnode node; + assert(list); for (node = list->head; node; nextnode (node)) if (data == getdata (node)) return node; diff --git a/lib/memory.h b/lib/memory.h index 925f6b65..a38cda3f 100644 --- a/lib/memory.h +++ b/lib/memory.h @@ -189,8 +189,6 @@ enum MTYPE_VRF, MTYPE_VRF_NAME, - - MTYPE_PRIVS, MTYPE_MAX }; diff --git a/lib/privs.c b/lib/privs.c index 9139823e..35e5a76b 100644 --- a/lib/privs.c +++ b/lib/privs.c @@ -40,7 +40,6 @@ static struct _zprivs_t uid_t zuid, /* uid to run as */ zsuid; /* saved uid */ gid_t zgid; /* gid to run as */ - gid_t vtygrp; /* gid for vty sockets */ } zprivs_state; /* externally exported but not directly accessed functions */ @@ -70,9 +69,11 @@ cap_map [ZCAP_MAX] = [ZCAP_DAC_OVERRIDE] = CAP_DAC_OVERRIDE, [ZCAP_READ_SEARCH] = CAP_DAC_READ_SEARCH, [ZCAP_SYS_ADMIN] = CAP_SYS_ADMIN, - [ZCAP_FOWNER] = CAP_FOWNER + [ZCAP_FOWNER] = ZCAP_FOWNER }; +static cap_value_t cap_setuid_value [] = { CAP_SETUID }; + /* convert zebras privileges to system capabilities */ static cap_value_t * zcaps2sys (zebra_capabilities_t *zcaps, int num) @@ -175,12 +176,6 @@ zprivs_init(struct zebra_privs_t *zprivs) struct passwd *pwentry = NULL; struct group *grentry = NULL; - if (!zprivs) - { - zlog_err ("zprivs_init: called with NULL arg!"); - exit (1); - } - /* NULL privs */ if (! (zprivs->user || zprivs->group || zprivs->cap_num_p || zprivs->cap_num_i) ) @@ -193,31 +188,7 @@ zprivs_init(struct zebra_privs_t *zprivs) if (zprivs->user) { if ( (pwentry = getpwnam (zprivs->user)) ) - { - zprivs_state.zuid = pwentry->pw_uid; - } - else - { - zlog_err ("privs_init: could not lookup supplied user"); - exit (1); - } - } - - grentry = NULL; - - if (zprivs->vty_group) - /* Add the vty_group to the supplementary groups so it can be chowned to */ - { - if ( (grentry = getgrnam (zprivs->vty_group)) ) - { - zprivs_state.vtygrp = grentry->gr_gid; - if ( setgroups (1, &zprivs_state.vtygrp) ) - { - zlog_err ("privs_init: could not setgroups, %s", - strerror (errno) ); - exit (1); - } - } + zprivs_state.zuid = pwentry->pw_uid; else { zlog_err ("privs_init: could not lookup supplied user"); @@ -227,20 +198,18 @@ zprivs_init(struct zebra_privs_t *zprivs) if (zprivs->group) { - if ( (grentry = getgrnam (zprivs->group)) ) - { - zprivs_state.zgid = grentry->gr_gid; - } + if ( (grentry = getgrnam (zprivs->user)) ) + zprivs_state.zgid = grentry->gr_gid; else { zlog_err ("privs_init: could not lookup supplied user"); exit (1); } + /* change group now, forever. uid we do later */ if ( setregid (zprivs_state.zgid, zprivs_state.zgid) ) { - zlog_err ("zprivs_init: could not setregid, %s", - strerror (errno) ); + zlog_err ("privs_init: could not setregid"); exit (1); } } @@ -269,17 +238,6 @@ zprivs_init(struct zebra_privs_t *zprivs) zlog_err ("privs_init: failed to cap_init, %s", strerror (errno) ); exit (1); } - - /* we have caps, we have no need to ever change back the original user */ - if (zprivs_state.zuid) - { - if ( setreuid (zprivs_state.zuid, zprivs_state.zuid) ) - { - zlog_err ("zprivs_init (cap): could not setreuid, %s", - strerror (errno) ); - exit (1); - } - } if ( cap_clear (zprivs_state.caps) ) { @@ -293,6 +251,12 @@ zprivs_init(struct zebra_privs_t *zprivs) cap_set_flag(zprivs_state.caps, CAP_EFFECTIVE, zprivs_state.sys_num_p, zprivs_state.syscaps_p, CAP_SET); + /* still need CAP_SETUID for the moment */ + cap_set_flag(zprivs_state.caps, CAP_PERMITTED, + 1, cap_setuid_value, CAP_SET); + cap_set_flag(zprivs_state.caps, CAP_EFFECTIVE, + 1, cap_setuid_value, CAP_SET); + /* set inheritable caps, if any */ if (zprivs_state.sys_num_i) { @@ -300,8 +264,8 @@ zprivs_init(struct zebra_privs_t *zprivs) zprivs_state.sys_num_i, zprivs_state.syscaps_i, CAP_SET); } - /* apply caps. CAP_EFFECTIVE is cleared. we'll raise the caps as - * and when, and only when, they are needed. + /* apply caps. CAP_EFFECTIVE is clear bar cap_setuid_value. + * we'll raise the caps as and when, and only when, they are needed. */ if ( cap_set_proc (zprivs_state.caps) ) { @@ -309,7 +273,28 @@ zprivs_init(struct zebra_privs_t *zprivs) exit (1); } - /* set methods for the caller to use */ + /* we have caps, we have no need to ever change back the original user */ + if (zprivs_state.zuid) + { + if ( setreuid (zprivs_state.zuid, zprivs_state.zuid) ) + { + zlog_err ("privs_init (cap): could not setreuid, %s", strerror (errno) ); + exit (1); + } + } + + /* No more need for cap_setuid_value */ + cap_set_flag(zprivs_state.caps, CAP_PERMITTED, + 1, cap_setuid_value, CAP_CLEAR); + cap_set_flag(zprivs_state.caps, CAP_EFFECTIVE, + 1, cap_setuid_value, CAP_CLEAR); + if ( cap_set_proc (zprivs_state.caps) ) + { + zlog_err ("privs_init: cap_set_proc failed to clear cap_setuid, %s", + strerror (errno) ); + exit (1); + } + zprivs->change = zprivs_change_caps; zprivs->current_state = zprivs_state_caps; @@ -369,18 +354,3 @@ zprivs_terminate (void) #endif /* HAVE_LCAPS */ return; } - -void -zprivs_get_ids(struct zprivs_ids_t *ids) -{ - - ids->uid_priv = getuid(); - (zprivs_state.zuid) ? (ids->uid_normal = zprivs_state.zuid) - : (ids->uid_normal = -1); - (zprivs_state.zgid) ? (ids->gid_normal = zprivs_state.zgid) - : (ids->gid_normal = -1); - (zprivs_state.vtygrp) ? (ids->gid_vty = zprivs_state.vtygrp) - : (ids->gid_vty = -1); - - return; -} diff --git a/lib/privs.h b/lib/privs.h index 65c9f358..3cdd20da 100644 --- a/lib/privs.h +++ b/lib/privs.h @@ -63,7 +63,7 @@ struct zebra_privs_t int cap_num_i; char *user; /* user and group to run as */ char *group; - char *vty_group; /* group to chown vty socket to */ + /* methods */ int (*change) (zebra_privs_ops_t); /* change privileges, 0 on success */ @@ -71,21 +71,9 @@ struct zebra_privs_t (*current_state) (void); /* current privilege state */ }; -struct zprivs_ids_t -{ - /* -1 is undefined */ - uid_t uid_priv; /* privileged uid */ - uid_t uid_normal; /* normal uid */ - gid_t gid_priv; /* privileged uid */ - gid_t gid_normal; /* normal uid */ - gid_t gid_vty; /* vty gid */ -}; - /* initialise zebra privileges */ void zprivs_init (struct zebra_privs_t *zprivs); /* drop all and terminate privileges */ void zprivs_terminate (void); - /* query for runtime uid's and gid's, eg vty needs this */ -void zprivs_get_ids(struct zprivs_ids_t *); #endif /* _ZEBRA_PRIVS_H */ diff --git a/lib/routemap.c b/lib/routemap.c index 4e65fa2b..b000f2fc 100644 --- a/lib/routemap.c +++ b/lib/routemap.c @@ -634,85 +634,72 @@ route_map_delete_set (struct route_map_index *index, char *set_name, return 1; } -/* Apply route map's each index to the object. - - The matrix for a route-map looks like this: - (note, this includes the description for the "NEXT" - and "GOTO" frobs now - - Match | No Match - | - permit a | c - | - ------------------+--------------- - | - deny b | d - | - - a) Apply Set statements, accept route - If NEXT is specified, goto NEXT statement - If GOTO is specified, goto the first clause where pref > nextpref - If nothing is specified, do as Cisco and finish - b) If NEXT is specified, goto NEXT statement - If nothing is specified, finally will be denied by route-map. - c) & d) Goto Next index - - If we get no matches after we've processed all updates, then the route - is dropped too. - - Some notes on the new "NEXT" and "GOTO" - on-match next - If this clause is matched, then the set statements - are executed and then we drop through to the next clause - on-match goto n - If this clause is matched, then the set statments - are executed and then we goto the nth clause, or the - first clause greater than this. In order to ensure - route-maps *always* exit, you cannot jump backwards. - Sorry ;) - - We need to make sure our route-map processing matches the above +/* Apply route map's each index to the object. */ +/* +** The matrix for a route-map looks like this: +** (note, this includes the description for the "NEXT" +** and "GOTO" frobs now +** +** Match | No Match +** | +** permit a | c +** | +** ------------------+--------------- +** | +** deny b | d +** | +** +** a) Apply Set statements, accept route +** If NEXT is specified, goto NEXT statement +** If GOTO is specified, goto the first clause where pref > nextpref +** If nothing is specified, do as Cisco and finish +** b) Finish route-map processing, and deny route +** c) & d) Goto Next index +** +** If we get no matches after we've processed all updates, then the route +** is dropped too. +** +** Some notes on the new "NEXT" and "GOTO" +** on-match next - If this clause is matched, then the set statements +** are executed and then we drop through to the next clause +** on-match goto n - If this clause is matched, then the set statments +** are executed and then we goto the nth clause, or the +** first clause greater than this. In order to ensure +** route-maps *always* exit, you cannot jump backwards. +** Sorry ;) +** +** We need to make sure our route-map processing matches the above */ route_map_result_t route_map_apply_index (struct route_map_index *index, struct prefix *prefix, route_map_object_t type, void *object) { - int ret = 0; + int ret; struct route_map_rule *match; struct route_map_rule *set; - - /* Check all match rule and if there is no match rule, go to the - set statement. */ - if (! index->match_list.head) - ret = RMAP_MATCH; - else + + /* Check all match rule and if there is no match rule return 0. */ + for (match = index->match_list.head; match; match = match->next) { - for (match = index->match_list.head; match; match = match->next) - { - /* Try each match statement in turn, If any return - RMAP_MATCH, go direct to set statement, otherwise, walk - to next match statement. */ - ret = (*match->cmd->func_apply)(match->value, prefix, type, object); - - if (ret == RMAP_MATCH) - break; - } + /* Try each match statement in turn. If any return something + other than RM_MATCH then we don't need to check anymore and can + return */ + ret = (*match->cmd->func_apply)(match->value, prefix, type, object); + if (ret != RMAP_MATCH) + return ret; } - /* If end of match statement, still can't get any RMAP_MATCH return, - just return to next rout-map statement. */ - - if (ret != RMAP_MATCH) - return ret; - /* We get here if all match statements matched From the matrix - above, if this is PERMIT we go on and apply the SET functions. - If we're deny, we return indicating we matched a deny */ + above, if this is PERMIT we go on and apply the SET functions. If + we're deny, we return indicating we matched a deny */ /* Apply set statement to the object. */ if (index->type == RMAP_PERMIT) { for (set = index->set_list.head; set; set = set->next) - ret = (*set->cmd->func_apply)(set->value, prefix, type, object); - + { + ret = (*set->cmd->func_apply)(set->value, prefix, type, object); + } return RMAP_MATCH; } else @@ -739,15 +726,11 @@ route_map_apply (struct route_map *map, struct prefix *prefix, /* Apply this index. End here if we get a RM_NOMATCH */ ret = route_map_apply_index (index, prefix, type, object); - if (ret == RMAP_MATCH || ret == RMAP_DENYMATCH) - return ret; - if (ret != RMAP_NOMATCH) { /* We now have to handle the NEXT and GOTO clauses */ if(index->exitpolicy == RMAP_EXIT) return ret; - if(index->exitpolicy == RMAP_GOTO) { /* Find the next clause to jump to */ @@ -22,7 +22,9 @@ #include <zebra.h> #ifdef HAVE_SNMP - +#ifdef HAVE_NETSNMP +#include <net-snmp/net-snmp-config.h> +#endif #include <asn1.h> #include <snmp.h> #include <snmp_impl.h> @@ -149,7 +149,7 @@ void smux_start (void); void smux_register_mib(char *, struct variable *, size_t, int, oid [], size_t); int smux_header_generic (struct variable *, oid [], size_t *, int, size_t *, WriteMethod **); -int smux_trap (oid *, size_t, oid *, size_t, struct trap_object *, size_t, unsigned int, u_char); +int smux_trap (oid *, size_t, oid *, size_t, struct trap_object *, size_t, unsigned int); int oid_compare (oid *, int, oid *, int); void oid2in_addr (oid [], int, struct in_addr *); diff --git a/lib/thread.c b/lib/thread.c index 31bbcd77..402167cf 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -26,6 +26,10 @@ #include "thread.h" #include "memory.h" #include "log.h" +#include "hash.h" +#include "command.h" + +static struct hash *cpu_record = NULL; /* Struct timeval's tv_usec one second value. */ #define TIMER_SECOND_MICRO 1000000L @@ -82,6 +86,141 @@ timeval_elapsed (struct timeval a, struct timeval b) + (a.tv_usec - b.tv_usec)); } +static unsigned int +cpu_record_hash_key (struct cpu_thread_history *a) +{ + return (unsigned int) a->func; +} + +static int +cpu_record_hash_cmp (struct cpu_thread_history *a, + struct cpu_thread_history *b) +{ + return a->func == b->func; +} + +static void* +cpu_record_hash_alloc (struct cpu_thread_history *a) +{ + struct cpu_thread_history *new; + new = XMALLOC( MTYPE_TMP/*XXX*/, sizeof *new); + memset(new, 0, sizeof *new); + new->func = a->func; + new->funcname = XSTRDUP(MTYPE_TMP/*XXX*/,a->funcname); + return new; +} + +static inline void +vty_out_cpu_thread_history(struct vty* vty, + struct cpu_thread_history *a) +{ + vty_out(vty, " %7ld.%03ld %9d %8ld %10ld %c%c%c%c%c %s%s", + a->total/1000, a->total%1000, a->total_calls, + a->total/a->total_calls, a->max, + a->types & (1 << THREAD_READ) ? 'R':' ', + a->types & (1 << THREAD_WRITE) ? 'W':' ', + a->types & (1 << THREAD_TIMER) ? 'T':' ', + a->types & (1 << THREAD_EVENT) ? 'E':' ', + a->types & (1 << THREAD_EXECUTE) ? 'X':' ', + a->funcname, VTY_NEWLINE); +} + +static void +cpu_record_hash_print(struct hash_backet *bucket, + void *args[]) +{ + struct cpu_thread_history *totals = args[0]; + struct vty *vty = args[1]; + unsigned char *filter = args[2]; + struct cpu_thread_history *a = bucket->data; + + + a = bucket->data; + if ( !(a->types & *filter) ) + return; + vty_out_cpu_thread_history(vty,a); + totals->total += a->total; + totals->total_calls += a->total_calls; + if (totals->max < a->max) + totals->max = a->max; +} + +static void +cpu_record_print(struct vty *vty, unsigned char filter) +{ + struct cpu_thread_history tmp; + void *args[3] = {&tmp, vty, &filter}; + + memset(&tmp, 0, sizeof tmp); + tmp.funcname = "TOTAL"; + tmp.types = filter; + + vty_out(vty, + " Runtime(ms) Invoked Avg uSecs Max uSecs Type Thread%s", + VTY_NEWLINE); + hash_iterate(cpu_record, + (void(*)(struct hash_backet*,void*))cpu_record_hash_print, + args); + + if (tmp.total_calls > 0) + vty_out_cpu_thread_history(vty, &tmp); +} + +DEFUN(show_thread_cpu, + show_thread_cpu_cmd, + "show thread cpu [FILTER]", + SHOW_STR + "Thread information\n" + "Thread CPU usage\n" + "Display filter (rwtex)\n") +{ + int i = 0; + unsigned char filter = 0xff; + + if (argc > 0) + { + filter = 0; + while (argv[0][i] != '\0') + { + switch ( argv[0][i] ) + { + case 'r': + case 'R': + filter |= (1 << THREAD_READ); + break; + case 'w': + case 'W': + filter |= (1 << THREAD_WRITE); + break; + case 't': + case 'T': + filter |= (1 << THREAD_TIMER); + break; + case 'e': + case 'E': + filter |= (1 << THREAD_EVENT); + break; + case 'x': + case 'X': + filter |= (1 << THREAD_EXECUTE); + break; + default: + break; + } + ++i; + } + if (filter == 0) + { + vty_out(vty, "Invalid filter \"%s\" specified, must contain at least one of 'RWTEX'%s", + argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + } + + cpu_record_print(vty, filter); + return CMD_SUCCESS; +} + /* List allocation and head/tail print out. */ static void thread_list_debug (struct thread_list *list) @@ -113,6 +252,10 @@ thread_master_debug (struct thread_master *m) struct thread_master * thread_master_create () { + if (cpu_record == NULL) + { + cpu_record = hash_create_size( 1011, cpu_record_hash_key, cpu_record_hash_cmp); + } return (struct thread_master *) XCALLOC (MTYPE_THREAD_MASTER, sizeof (struct thread_master)); } @@ -185,6 +328,7 @@ thread_list_free (struct thread_master *m, struct thread_list *list) for (t = list->head; t; t = next) { next = t->next; + XFREE (MTYPE_STRVEC, t->funcname); XFREE (MTYPE_THREAD, t); list->count--; m->alloc--; @@ -235,32 +379,66 @@ thread_timer_remain_second (struct thread *thread) return 0; } +/* Trim blankspace and "()"s */ +static char * +strip_funcname (char *funcname) +{ + char buff[100]; + char tmp, *ret, *e, *b = buff; + + strncpy(buff, funcname, sizeof(buff)); + buff[ sizeof(buff) -1] = '\0'; + e = buff +strlen(buff) -1; + + /* Wont work for funcname == "Word (explanation)" */ + + while (*b == ' ' || *b == '(') + ++b; + while (*e == ' ' || *e == ')') + --e; + e++; + + tmp = *e; + *e = '\0'; + ret = XSTRDUP (MTYPE_STRVEC, b); + *e = tmp; + + return ret; +} + /* Get new thread. */ static struct thread * thread_get (struct thread_master *m, u_char type, - int (*func) (struct thread *), void *arg) + int (*func) (struct thread *), void *arg, char* funcname) { struct thread *thread; if (m->unuse.head) - thread = thread_trim_head (&m->unuse); + { + thread = thread_trim_head (&m->unuse); + if (thread->funcname) + XFREE(MTYPE_STRVEC, thread->funcname); + } else { thread = XCALLOC (MTYPE_THREAD, sizeof (struct thread)); m->alloc++; } thread->type = type; + thread->add_type = type; thread->master = m; thread->func = func; thread->arg = arg; + thread->funcname = strip_funcname(funcname); + return thread; } /* Add new read thread. */ struct thread * -thread_add_read (struct thread_master *m, - int (*func) (struct thread *), void *arg, int fd) +funcname_thread_add_read (struct thread_master *m, + int (*func) (struct thread *), void *arg, int fd, char* funcname) { struct thread *thread; @@ -272,7 +450,7 @@ thread_add_read (struct thread_master *m, return NULL; } - thread = thread_get (m, THREAD_READ, func, arg); + thread = thread_get (m, THREAD_READ, func, arg, funcname); FD_SET (fd, &m->readfd); thread->u.fd = fd; thread_list_add (&m->read, thread); @@ -282,8 +460,8 @@ thread_add_read (struct thread_master *m, /* Add new write thread. */ struct thread * -thread_add_write (struct thread_master *m, - int (*func) (struct thread *), void *arg, int fd) +funcname_thread_add_write (struct thread_master *m, + int (*func) (struct thread *), void *arg, int fd, char* funcname) { struct thread *thread; @@ -295,7 +473,7 @@ thread_add_write (struct thread_master *m, return NULL; } - thread = thread_get (m, THREAD_WRITE, func, arg); + thread = thread_get (m, THREAD_WRITE, func, arg, funcname); FD_SET (fd, &m->writefd); thread->u.fd = fd; thread_list_add (&m->write, thread); @@ -305,8 +483,8 @@ thread_add_write (struct thread_master *m, /* Add timer event thread. */ struct thread * -thread_add_timer (struct thread_master *m, - int (*func) (struct thread *), void *arg, long timer) +funcname_thread_add_timer (struct thread_master *m, + int (*func) (struct thread *), void *arg, long timer, char* funcname) { struct timeval timer_now; struct thread *thread; @@ -316,7 +494,7 @@ thread_add_timer (struct thread_master *m, assert (m != NULL); - thread = thread_get (m, THREAD_TIMER, func, arg); + thread = thread_get (m, THREAD_TIMER, func, arg, funcname); /* Do we need jitter here? */ gettimeofday (&timer_now, NULL); @@ -342,14 +520,14 @@ thread_add_timer (struct thread_master *m, /* Add simple event thread. */ struct thread * -thread_add_event (struct thread_master *m, - int (*func) (struct thread *), void *arg, int val) +funcname_thread_add_event (struct thread_master *m, + int (*func) (struct thread *), void *arg, int val, char* funcname) { struct thread *thread; assert (m != NULL); - thread = thread_get (m, THREAD_EVENT, func, arg); + thread = thread_get (m, THREAD_EVENT, func, arg, funcname); thread->u.val = val; thread_list_add (&m->event, thread); @@ -621,6 +799,11 @@ thread_call (struct thread *thread) { unsigned long thread_time; RUSAGE_T ru; + struct cpu_thread_history tmp, *cpu; + + tmp.func = thread->func; + tmp.funcname = thread->funcname; + cpu = hash_get(cpu_record, &tmp, cpu_record_hash_alloc); GETRUSAGE (&thread->ru); @@ -629,6 +812,12 @@ thread_call (struct thread *thread) GETRUSAGE (&ru); thread_time = thread_consumed_time (&ru, &thread->ru); + cpu->total += thread_time; + if (cpu->max < thread_time) + cpu->max = thread_time; + + ++cpu->total_calls; + cpu->types |= (1 << thread->add_type); #ifdef THREAD_CONSUMED_TIME_CHECK if (thread_time > 200000L) @@ -638,8 +827,8 @@ thread_call (struct thread *thread) * Whinge about it now, so we're aware this is yet another task * to fix. */ - zlog_err ("CPU HOG task %lx ran for %ldms", - /* FIXME: report the name of the function somehow */ + zlog_err ("CPU HOG task %s (%lx) ran for %ldms", + thread->funcname, (unsigned long) thread->func, thread_time / 1000L); } @@ -648,21 +837,26 @@ thread_call (struct thread *thread) /* Execute thread */ struct thread * -thread_execute (struct thread_master *m, +funcname_thread_execute (struct thread_master *m, int (*func)(struct thread *), void *arg, - int val) + int val, + char* funcname) { struct thread dummy; memset (&dummy, 0, sizeof (struct thread)); dummy.type = THREAD_EVENT; + dummy.add_type = THREAD_EXECUTE; dummy.master = NULL; dummy.func = func; dummy.arg = arg; dummy.u.val = val; + dummy.funcname = strip_funcname (funcname); thread_call (&dummy); + XFREE (MTYPE_STRVEC, dummy.funcname); + return NULL; } diff --git a/lib/thread.h b/lib/thread.h index 9de62cdd..0a45d8f3 100644 --- a/lib/thread.h +++ b/lib/thread.h @@ -57,6 +57,7 @@ struct thread_master struct thread { unsigned char type; /* thread type */ + unsigned char add_type; /* thread type */ struct thread *next; /* next pointer of the thread */ struct thread *prev; /* previous pointer of the thread */ struct thread_master *master; /* pointer to the struct thread_master. */ @@ -68,6 +69,15 @@ struct thread struct timeval sands; /* rest of time sands value. */ } u; RUSAGE_T ru; /* Indepth usage info. */ + char* funcname; +}; + +struct cpu_thread_history { + int (*func)(struct thread *); + char *funcname; + unsigned int total_calls; + unsigned long total, max; + unsigned char types; }; /* Thread types. */ @@ -77,6 +87,7 @@ struct thread #define THREAD_EVENT 3 #define THREAD_READY 4 #define THREAD_UNUSED 5 +#define THREAD_EXECUTE 6 /* Thread yield time. */ #define THREAD_YIELD_TIME_SLOT 100 * 1000L /* 100ms */ @@ -117,23 +128,31 @@ struct thread #define THREAD_WRITE_OFF(thread) THREAD_OFF(thread) #define THREAD_TIMER_OFF(thread) THREAD_OFF(thread) +#define thread_add_read(m,f,a,v) funcname_thread_add_read(m,f,a,v,#f) +#define thread_add_write(m,f,a,v) funcname_thread_add_write(m,f,a,v,#f) +#define thread_add_timer(m,f,a,v) funcname_thread_add_timer(m,f,a,v,#f) +#define thread_add_event(m,f,a,v) funcname_thread_add_event(m,f,a,v,#f) +#define thread_execute(m,f,a,v) funcname_thread_execute(m,f,a,v,#f) + /* Prototypes. */ struct thread_master *thread_master_create (); -struct thread *thread_add_read (struct thread_master *, - int (*)(struct thread *), void *, int); -struct thread *thread_add_write (struct thread_master *, - int (*)(struct thread *), void *, int); -struct thread *thread_add_timer (struct thread_master *, - int (*)(struct thread *), void *, long); -struct thread *thread_add_event (struct thread_master *, - int (*)(struct thread *), void *, int ); +struct thread *funcname_thread_add_read (struct thread_master *, + int (*)(struct thread *), void *, int, char*); +struct thread *funcname_thread_add_write (struct thread_master *, + int (*)(struct thread *), void *, int, char*); +struct thread *funcname_thread_add_timer (struct thread_master *, + int (*)(struct thread *), void *, long, char*); +struct thread *funcname_thread_add_event (struct thread_master *, + int (*)(struct thread *), void *, int, char*); void thread_cancel (struct thread *); void thread_cancel_event (struct thread_master *, void *); struct thread *thread_fetch (struct thread_master *, struct thread *); -struct thread *thread_execute (struct thread_master *, - int (*)(struct thread *), void *, int); +struct thread *funcname_thread_execute (struct thread_master *, + int (*)(struct thread *), void *, int, char *); void thread_call (struct thread *); unsigned long thread_timer_remain_second (struct thread *); +extern struct cmd_element show_thread_cpu_cmd; + #endif /* _ZEBRA_THREAD_H */ diff --git a/lib/version.h b/lib/version.h index ecb6b0a3..9a90bf4e 100644 --- a/lib/version.h +++ b/lib/version.h @@ -22,7 +22,7 @@ #ifndef _ZEBRA_VERSION_H #define _ZEBRA_VERSION_H -#define ZEBRA_VERSION "0.94" +#define ZEBRA_VERSION "0.93b" #define ZEBRA_BUG_ADDRESS "bug-zebra@gnu.org" @@ -33,7 +33,6 @@ #include "log.h" #include "prefix.h" #include "filter.h" -#include "privs.h" /* Vty events */ enum event @@ -1852,8 +1851,7 @@ vty_serv_un (char *path) int sock, len; struct sockaddr_un serv; mode_t old_mask; - struct zprivs_ids_t ids; - + /* First of all, unlink existing socket */ unlink (path); @@ -1896,18 +1894,6 @@ vty_serv_un (char *path) umask (old_mask); - zprivs_get_ids(&ids); - - if (ids.gid_vty > 0) - { - /* set group of socket */ - if ( chown (path, -1, ids.gid_vty) ) - { - zlog_err ("vty_serv_un: could chown socket, %s", - strerror (errno) ); - } - } - vty_event (VTYSH_SERV, sock, NULL); } diff --git a/lib/zebra.h b/lib/zebra.h index 15608dbc..62566cf8 100644 --- a/lib/zebra.h +++ b/lib/zebra.h @@ -42,8 +42,6 @@ typedef int socklen_t; #include <fcntl.h> #include <signal.h> #include <string.h> -#include <pwd.h> -#include <grp.h> #ifdef HAVE_STROPTS_H #include <stropts.h> #endif /* HAVE_STROPTS_H */ @@ -72,10 +70,6 @@ typedef int socklen_t; #ifdef HAVE_RUSAGE #include <sys/resource.h> #endif /* HAVE_RUSAGE */ -#ifdef HAVE_LCAPS -#include <sys/capability.h> -#include <sys/prctl.h> -#endif /* HAVE_LCAPS */ /* machine dependent includes */ #ifdef SUNOS_5 diff --git a/ospf6d/.cvsignore b/ospf6d/.cvsignore index cec4061c..5e76e4db 100644 --- a/ospf6d/.cvsignore +++ b/ospf6d/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o *.patch ospf6d diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog index 8a8c0bfd..63052c7c 100644 --- a/ospf6d/ChangeLog +++ b/ospf6d/ChangeLog @@ -1,9 +1,24 @@ +2003-05-18 Hasso Tepper <hasso@estpak.ee> + + * ospf6_{dump,interface,zebra}.c,ospf6d.c: show router and interface + nodes from ospf6d when using vtysh, and don't show defaults in + interface node (from ^WIND patch). + +2003-04-23 Hasso Tepper <hasso@estpak.ee> + + * {ospf6_damp,ospf6d}.c: fix "router xxx" node commands in vtysh + 2003-04-25 Yasuhiro Ohara <yasu@sfc.wide.ad.jp> * ospf6_asbr.c: AS-External LSA refresh was based on the prefix of the obsolete LSA. It was wrong so fixed. * version: 0.9.6p +2003-04-19 Hasso Tepper <hasso@estpak.ee> + + * rip_routemap.c: sync daemon's route-map commands to have same + syntax + 2002-11-09 Vincent Jardin <jardin@6wind.com> * ospf6_interface.c: update link-local address on interface creation. diff --git a/ospf6d/Makefile.am b/ospf6d/Makefile.am index e42814af..680e89b8 100644 --- a/ospf6d/Makefile.am +++ b/ospf6d/Makefile.am @@ -28,7 +28,7 @@ noinst_HEADERS = \ ospf6d_SOURCES = \ ospf6_main.c $(libospf6_a_SOURCES) -ospf6d_LDADD = -L../lib -lzebra @LIBCAP@ +ospf6d_LDADD = -L../lib -lzebra sysconf_DATA = ospf6d.conf.sample diff --git a/ospf6d/Makefile.in b/ospf6d/Makefile.in deleted file mode 100644 index 548ba099..00000000 --- a/ospf6d/Makefile.in +++ /dev/null @@ -1,478 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -INSTALL_SDATA = @INSTALL@ -m 600 - -noinst_LIBRARIES = libospf6.a -sbin_PROGRAMS = ospf6d - -libospf6_a_SOURCES = \ - ospf6_dump.c ospf6d.c ospf6_interface.c ospf6_network.c \ - ospf6_neighbor.c ospf6_message.c ospf6_lsa.c ospf6_spf.c \ - ospf6_route.c ospf6_zebra.c ospf6_ism.c ospf6_dbex.c \ - ospf6_lsdb.c ospf6_prefix.c ospf6_top.c ospf6_area.c ospf6_nsm.c \ - ospf6_routemap.c ospf6_proto.c \ - ospf6_hook.c ospf6_asbr.c ospf6_bintree.c ospf6_linklist.c \ - ospf6_abr.c ospf6_intra.c ospf6_damp.c - - -noinst_HEADERS = \ - ospf6_area.h ospf6_dump.h ospf6_interface.h ospf6_lsa.h \ - ospf6_message.h ospf6_neighbor.h ospf6_network.h ospf6_proto.h \ - ospf6_spf.h ospf6_route.h ospf6_types.h ospf6_zebra.h ospf6d.h \ - ospf6_ism.h ospf6_dbex.h ospf6_lsdb.h ospf6_prefix.h \ - ospf6_top.h ospf6_nsm.h ospf6_routemap.h \ - ospf6_hook.h ospf6_asbr.h ospf6_bintree.h ospf6_linklist.h \ - ospf6_abr.h ospf6_intra.h ospf6_damp.h - - -ospf6d_SOURCES = \ - ospf6_main.c $(libospf6_a_SOURCES) - - -ospf6d_LDADD = ../lib/libzebra.a - -sysconf_DATA = ospf6d.conf.sample - -EXTRA_DIST = $(sysconf_DATA) -subdir = ospf6d -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libospf6_a_AR = $(AR) cru -libospf6_a_LIBADD = -am_libospf6_a_OBJECTS = ospf6_dump.$(OBJEXT) ospf6d.$(OBJEXT) \ - ospf6_interface.$(OBJEXT) ospf6_network.$(OBJEXT) \ - ospf6_neighbor.$(OBJEXT) ospf6_message.$(OBJEXT) \ - ospf6_lsa.$(OBJEXT) ospf6_spf.$(OBJEXT) ospf6_route.$(OBJEXT) \ - ospf6_zebra.$(OBJEXT) ospf6_ism.$(OBJEXT) ospf6_dbex.$(OBJEXT) \ - ospf6_lsdb.$(OBJEXT) ospf6_prefix.$(OBJEXT) ospf6_top.$(OBJEXT) \ - ospf6_area.$(OBJEXT) ospf6_nsm.$(OBJEXT) \ - ospf6_routemap.$(OBJEXT) ospf6_proto.$(OBJEXT) \ - ospf6_hook.$(OBJEXT) ospf6_asbr.$(OBJEXT) \ - ospf6_bintree.$(OBJEXT) ospf6_linklist.$(OBJEXT) \ - ospf6_abr.$(OBJEXT) ospf6_intra.$(OBJEXT) ospf6_damp.$(OBJEXT) -libospf6_a_OBJECTS = $(am_libospf6_a_OBJECTS) -sbin_PROGRAMS = ospf6d$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am__objects_1 = ospf6_dump.$(OBJEXT) ospf6d.$(OBJEXT) \ - ospf6_interface.$(OBJEXT) ospf6_network.$(OBJEXT) \ - ospf6_neighbor.$(OBJEXT) ospf6_message.$(OBJEXT) \ - ospf6_lsa.$(OBJEXT) ospf6_spf.$(OBJEXT) ospf6_route.$(OBJEXT) \ - ospf6_zebra.$(OBJEXT) ospf6_ism.$(OBJEXT) ospf6_dbex.$(OBJEXT) \ - ospf6_lsdb.$(OBJEXT) ospf6_prefix.$(OBJEXT) ospf6_top.$(OBJEXT) \ - ospf6_area.$(OBJEXT) ospf6_nsm.$(OBJEXT) \ - ospf6_routemap.$(OBJEXT) ospf6_proto.$(OBJEXT) \ - ospf6_hook.$(OBJEXT) ospf6_asbr.$(OBJEXT) \ - ospf6_bintree.$(OBJEXT) ospf6_linklist.$(OBJEXT) \ - ospf6_abr.$(OBJEXT) ospf6_intra.$(OBJEXT) ospf6_damp.$(OBJEXT) -am_ospf6d_OBJECTS = ospf6_main.$(OBJEXT) $(am__objects_1) -ospf6d_OBJECTS = $(am_ospf6d_OBJECTS) -ospf6d_DEPENDENCIES = ../lib/libzebra.a -ospf6d_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ospf6_abr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_area.Po ./$(DEPDIR)/ospf6_asbr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_bintree.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_damp.Po ./$(DEPDIR)/ospf6_dbex.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_dump.Po ./$(DEPDIR)/ospf6_hook.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_interface.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_intra.Po ./$(DEPDIR)/ospf6_ism.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_linklist.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_lsa.Po ./$(DEPDIR)/ospf6_lsdb.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_message.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_neighbor.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_network.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_nsm.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_prefix.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_proto.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_route.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_routemap.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_spf.Po ./$(DEPDIR)/ospf6_top.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf6_zebra.Po ./$(DEPDIR)/ospf6d.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libospf6_a_SOURCES) $(ospf6d_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = README $(noinst_HEADERS) ChangeLog Makefile.am \ - Makefile.in -SOURCES = $(libospf6_a_SOURCES) $(ospf6d_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign ospf6d/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libospf6.a: $(libospf6_a_OBJECTS) $(libospf6_a_DEPENDENCIES) - -rm -f libospf6.a - $(libospf6_a_AR) libospf6.a $(libospf6_a_OBJECTS) $(libospf6_a_LIBADD) - $(RANLIB) libospf6.a -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -ospf6d$(EXEEXT): $(ospf6d_OBJECTS) $(ospf6d_DEPENDENCIES) - @rm -f ospf6d$(EXEEXT) - $(LINK) $(ospf6d_LDFLAGS) $(ospf6d_OBJECTS) $(ospf6d_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_abr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_area.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_asbr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_bintree.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_damp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_dbex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_hook.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_interface.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_intra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_ism.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_linklist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_lsa.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_lsdb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_message.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_neighbor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_network.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_nsm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_prefix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_proto.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_route.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_spf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_top.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_zebra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6d.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES clean-sbinPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES clean-sbinPROGRAMS distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-sbinPROGRAMS install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am uninstall-sbinPROGRAMS uninstall-sysconfDATA - - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/ospf6d/ospf6_damp.c b/ospf6d/ospf6_damp.c index 4e807a70..878c48f6 100644 --- a/ospf6d/ospf6_damp.c +++ b/ospf6d/ospf6_damp.c @@ -567,8 +567,8 @@ DEFUN (show_ipv6_ospf6_route_flapping, return CMD_SUCCESS; } -DEFUN (flap_damping_route, - flap_damping_route_cmd, +DEFUN (ospf6_flap_damping_route, + ospf6_flap_damping_route_cmd, "flap-damping route <0-4294967295> <0-4294967295> " "<0-4294967295> <0-4294967295>", "enable flap dampening\n" @@ -734,7 +734,7 @@ ospf6_damp_init () install_element (VIEW_NODE, &show_ipv6_ospf6_route_flapping_cmd); install_element (ENABLE_NODE, &show_ipv6_ospf6_route_flapping_cmd); install_element (ENABLE_NODE, &show_ipv6_ospf6_camp_config_cmd); - install_element (OSPF6_NODE, &flap_damping_route_cmd); + install_element (OSPF6_NODE, &ospf6_flap_damping_route_cmd); install_element (ENABLE_NODE, &show_debug_ospf6_damp_cmd); install_element (CONFIG_NODE, &debug_ospf6_damp_cmd); diff --git a/ospf6d/ospf6_dump.c b/ospf6d/ospf6_dump.c index e950ec8c..1e3c0c42 100644 --- a/ospf6d/ospf6_dump.c +++ b/ospf6d/ospf6_dump.c @@ -224,7 +224,8 @@ DEFUN (no_debug_ospf6_all, struct cmd_node debug_node = { DEBUG_NODE, - "" + "", + vtysh: 1 }; int diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index d394f21b..4d632b22 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -961,18 +961,25 @@ ospf6_interface_config_write (struct vty *vty) vty_out (vty, "interface %s%s", o6i->interface->name, VTY_NEWLINE); + if (o6i->cost != 1) vty_out (vty, " ipv6 ospf6 cost %d%s", o6i->cost, VTY_NEWLINE); + if (o6i->hello_interval != 10) vty_out (vty, " ipv6 ospf6 hello-interval %d%s", o6i->hello_interval, VTY_NEWLINE); + if (o6i->dead_interval != 40) vty_out (vty, " ipv6 ospf6 dead-interval %d%s", o6i->dead_interval, VTY_NEWLINE); + if (o6i->rxmt_interval != 5) vty_out (vty, " ipv6 ospf6 retransmit-interval %d%s", o6i->rxmt_interval, VTY_NEWLINE); + if (o6i->priority != 1) vty_out (vty, " ipv6 ospf6 priority %d%s", o6i->priority, VTY_NEWLINE); + if (o6i->transdelay != 1) vty_out (vty, " ipv6 ospf6 transmit-delay %d%s", o6i->transdelay, VTY_NEWLINE); + if (o6i->instance_id != 0) vty_out (vty, " ipv6 ospf6 instance-id %d%s", o6i->instance_id, VTY_NEWLINE); @@ -994,6 +1001,7 @@ struct cmd_node interface_node = { INTERFACE_NODE, "%s(config-if)# ", + vtysh: 1 }; void diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index e6cd6aaa..10203bf8 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -27,7 +27,6 @@ #include "command.h" #include "vty.h" #include "memory.h" -#include "privs.h" #include "ospf6d.h" #include "ospf6_network.h" @@ -44,26 +43,6 @@ extern int ospf6_sock; /* Default port values. */ #define OSPF6_VTY_PORT 2606 -/* ospf6d privileges */ -zebra_capabilities_t _caps_p [] = -{ - ZCAP_RAW, - ZCAP_BIND -}; - -struct zebra_privs_t ospf6d_privs = -{ -#if defined(ZEBRA_USER) - .user = ZEBRA_USER, -#endif -#if defined ZEBRA_GROUP - .group = ZEBRA_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = 2, - .cap_num_i = 0 -}; - /* ospf6d options, we use GNU getopt library. */ struct option longopts[] = { @@ -72,7 +51,6 @@ struct option longopts[] = { "pid_file", required_argument, NULL, 'i'}, { "vty_addr", required_argument, NULL, 'A'}, { "vty_port", required_argument, NULL, 'P'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { "help", no_argument, NULL, 'h'}, { 0 } @@ -115,7 +93,6 @@ Daemon which manages OSPF version 3.\n\n\ -i, --pid_file Set process identifier file name\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -254,7 +231,7 @@ main (int argc, char *argv[], char *envp[]) /* Command line argument treatment. */ while (1) { - opt = getopt_long (argc, argv, "df:hp:A:P:u:v", longopts, 0); + opt = getopt_long (argc, argv, "df:hp:A:P:v", longopts, 0); if (opt == EOF) break; @@ -286,9 +263,6 @@ main (int argc, char *argv[], char *envp[]) vty_port = atoi (optarg); vty_port = (vty_port ? vty_port : OSPF6_VTY_PORT); break; - case 'u': - ospf6d_privs.user = ospf6d_privs.group = optarg; - break; case 'v': print_version (progname); exit (0); @@ -314,7 +288,6 @@ main (int argc, char *argv[], char *envp[]) zlog_default = openzlog (progname, flag, ZLOG_OSPF6, LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON); - zprivs_init (&ospf6d_privs); signal_init (); cmd_init (1); vty_init (); diff --git a/ospf6d/ospf6_network.c b/ospf6d/ospf6_network.c index ece34135..e90614e5 100644 --- a/ospf6d/ospf6_network.c +++ b/ospf6d/ospf6_network.c @@ -23,7 +23,6 @@ #include "memory.h" #include "log.h" #include "sockunion.h" -#include "privs.h" #include "ospf6d.h" #include "ospf6_proto.h" @@ -33,7 +32,6 @@ extern struct sockaddr_in6 allspfrouters6; extern struct sockaddr_in6 alldrouters6; extern int ospf6_sock; extern struct thread_master *master; -extern struct zebra_privs_t ospf6d_privs; /* iovec functions */ void @@ -196,10 +194,6 @@ iov_copy_all (struct iovec *dst, struct iovec *src, size_t size) int ospf6_serv_sock () { - - if (ospf6d_privs.change (ZPRIVS_RAISE)) - zlog_err ("ospf6_serv_sock: could not raise privs"); - ospf6_sock = socket (AF_INET6, SOCK_RAW, IPPROTO_OSPFIGP); if (ospf6_sock < 0) { @@ -208,9 +202,6 @@ ospf6_serv_sock () } sockopt_reuseaddr (ospf6_sock); - if (ospf6d_privs.change (ZPRIVS_LOWER)) - zlog_err ("ospf_sock_init: could not lower privs"); - /* setup global sockaddr_in6, allspf6 & alldr6 for later use */ allspfrouters6.sin6_family = AF_INET6; alldrouters6.sin6_family = AF_INET6; diff --git a/ospf6d/ospf6_routemap.c b/ospf6d/ospf6_routemap.c index 14df7940..f617e913 100644 --- a/ospf6d/ospf6_routemap.c +++ b/ospf6d/ospf6_routemap.c @@ -214,14 +214,14 @@ route_map_command_status (struct vty *vty, int ret) } /* add "match address" */ -DEFUN (ospf6_routemap_match_address_prefixlist, - ospf6_routemap_match_address_prefixlist_cmd, +DEFUN (match_ipv6_address_prefix_list, + match_ipv6_address_prefix_list_cmd, "match ipv6 address prefix-list WORD", - "Match values\n" + MATCH_STR IPV6_STR "Match address of route\n" "Match entries of prefix-lists\n" - "IPv6 prefix-list name\n") + "IP prefix-list name\n") { int ret = route_map_add_match ((struct route_map_index *) vty->index, "ipv6 address prefix-list", argv[0]); @@ -229,15 +229,15 @@ DEFUN (ospf6_routemap_match_address_prefixlist, } /* delete "match address" */ -DEFUN (ospf6_routemap_no_match_address_prefixlist, - ospf6_routemap_no_match_address_prefixlist_cmd, +DEFUN (no_match_ipv6_address_prefix_list, + no_match_ipv6_address_prefix_list_cmd, "no match ipv6 address prefix-list WORD", NO_STR - "Match values\n" + MATCH_STR IPV6_STR "Match address of route\n" "Match entries of prefix-lists\n" - "IPv6 prefix-list name\n") + "IP prefix-list name\n") { int ret = route_map_delete_match ((struct route_map_index *) vty->index, "ipv6 address prefix-list", argv[0]); @@ -245,13 +245,13 @@ DEFUN (ospf6_routemap_no_match_address_prefixlist, } /* add "set metric-type" */ -DEFUN (ospf6_routemap_set_metric_type, - ospf6_routemap_set_metric_type_cmd, +DEFUN (set_metric_type, + set_metric_type_cmd, "set metric-type (type-1|type-2)", - "Set value\n" - "Type of metric\n" - "OSPF6 external type 1 metric\n" - "OSPF6 external type 2 metric\n") + SET_STR + "Type of metric for destination routing protocol\n" + "OSPF[6] external type 1 metric\n" + "OSPF[6] external type 2 metric\n") { int ret = route_map_add_set ((struct route_map_index *) vty->index, "metric-type", argv[0]); @@ -259,26 +259,38 @@ DEFUN (ospf6_routemap_set_metric_type, } /* delete "set metric-type" */ -DEFUN (ospf6_routemap_no_set_metric_type, - ospf6_routemap_no_set_metric_type_cmd, - "no set metric-type (type-1|type-2)", +DEFUN (no_set_metric_type, + no_set_metric_type_cmd, + "no set metric-type", NO_STR - "Set value\n" - "Type of metric\n" - "OSPF6 external type 1 metric\n" - "OSPF6 external type 2 metric\n") + SET_STR + "Type of metric for destination routing protocol\n") { - int ret = route_map_delete_set ((struct route_map_index *) vty->index, + int ret; + if (argc == 0) + ret = route_map_delete_set ((struct route_map_index *) vty->index, + "metric-type", NULL); + else + ret = route_map_delete_set ((struct route_map_index *) vty->index, "metric-type", argv[0]); return route_map_command_status (vty, ret); } +ALIAS (no_set_metric_type, + no_set_metric_type_val_cmd, + "no set metric-type (type-1|type-2)", + NO_STR + SET_STR + "Type of metric for destination routing protocol\n" + "OSPF[6] external type 1 metric\n" + "OSPF[6] external type 2 metric\n") + /* add "set metric" */ DEFUN (set_metric, set_metric_cmd, "set metric <0-4294967295>", - "Set value\n" - "Metric value\n" + SET_STR + "Metric value for destination routing protocol\n" "Metric value\n") { int ret = route_map_add_set ((struct route_map_index *) vty->index, @@ -289,17 +301,29 @@ DEFUN (set_metric, /* delete "set metric" */ DEFUN (no_set_metric, no_set_metric_cmd, - "no set metric <0-4294967295>", + "no set metric", NO_STR - "Set value\n" - "Metric\n" - "METRIC value\n") + SET_STR + "Metric value for destination routing protocol\n") { - int ret = route_map_delete_set ((struct route_map_index *) vty->index, + int ret; + if (argc == 0) + ret = route_map_delete_set ((struct route_map_index *) vty->index, + "metric", NULL); + else + ret = route_map_delete_set ((struct route_map_index *) vty->index, "metric", argv[0]); return route_map_command_status (vty, ret); } +ALIAS (no_set_metric, + no_set_metric_val_cmd, + "no set metric <0-4294967295>", + NO_STR + SET_STR + "Metric value for destination routing protocol\n" + "Metric value\n") + /* add "set forwarding-address" */ DEFUN (ospf6_routemap_set_forwarding, ospf6_routemap_set_forwarding_cmd, @@ -341,16 +365,18 @@ ospf6_routemap_init () route_map_install_set (&ospf6_routemap_rule_set_forwarding_cmd); /* Match address prefix-list */ - install_element (RMAP_NODE, &ospf6_routemap_match_address_prefixlist_cmd); - install_element (RMAP_NODE, &ospf6_routemap_no_match_address_prefixlist_cmd); + install_element (RMAP_NODE, &match_ipv6_address_prefix_list_cmd); + install_element (RMAP_NODE, &no_match_ipv6_address_prefix_list_cmd); /* ASE Metric Type (e.g. Type-1/Type-2) */ - install_element (RMAP_NODE, &ospf6_routemap_set_metric_type_cmd); - install_element (RMAP_NODE, &ospf6_routemap_no_set_metric_type_cmd); + install_element (RMAP_NODE, &set_metric_type_cmd); + install_element (RMAP_NODE, &no_set_metric_type_cmd); + install_element (RMAP_NODE, &no_set_metric_type_val_cmd); /* ASE Metric */ install_element (RMAP_NODE, &set_metric_cmd); install_element (RMAP_NODE, &no_set_metric_cmd); + install_element (RMAP_NODE, &no_set_metric_val_cmd); /* ASE Metric */ install_element (RMAP_NODE, &ospf6_routemap_set_forwarding_cmd); diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c index 7b8a8dcf..347ba1cf 100644 --- a/ospf6d/ospf6_zebra.c +++ b/ospf6d/ospf6_zebra.c @@ -348,6 +348,7 @@ struct cmd_node zebra_node = { ZEBRA_NODE, "%s(config-zebra)# ", + vtysh: 0 }; #define ADD 0 diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c index d52ab93e..04609ba8 100644 --- a/ospf6d/ospf6d.c +++ b/ospf6d/ospf6d.c @@ -281,8 +281,8 @@ DEFUN (show_ipv6_ospf6_statistics, } /* change Router_ID commands. */ -DEFUN (router_id, - router_id_cmd, +DEFUN (ospf6_router_id, + ospf6_router_id_cmd, "router-id ROUTER_ID", "Configure ospf Router-ID.\n" V4NOTATION_STR) @@ -403,8 +403,8 @@ ospf6_interface_bind_area (struct vty *vty, return CMD_SUCCESS; } -DEFUN (interface_area_plist, - interface_area_plist_cmd, +DEFUN (ospf6_interface_area_plist, + ospf6_interface_area_plist_cmd, "interface IFNAME area A.B.C.D prefix-list WORD", "Enable routing on an IPv6 interface\n" IFNAME_STR @@ -421,8 +421,8 @@ DEFUN (interface_area_plist, return ospf6_interface_bind_area (vty, argv[0], argv[1], argv[2], 0); } -DEFUN (interface_area_plist_passive, - interface_area_plist_passive_cmd, +DEFUN (ospf6_interface_area_plist_passive, + ospf6_interface_area_plist_passive_cmd, "interface IFNAME area A.B.C.D prefix-list WORD passive", "Enable routing on an IPv6 interface\n" IFNAME_STR @@ -441,8 +441,8 @@ DEFUN (interface_area_plist_passive, return ospf6_interface_bind_area (vty, argv[0], argv[1], argv[2], 1); } -DEFUN (interface_area, - interface_area_cmd, +DEFUN (ospf6_interface_area, + ospf6_interface_area_cmd, "interface IFNAME area A.B.C.D", "Enable routing on an IPv6 interface\n" IFNAME_STR @@ -476,8 +476,8 @@ DEFUN (interface_area, plist_name, passive); } -DEFUN (interface_area_passive, - interface_area_passive_cmd, +DEFUN (ospf6_interface_area_passive, + ospf6_interface_area_passive_cmd, "interface IFNAME area A.B.C.D passive", "Enable routing on an IPv6 interface\n" IFNAME_STR @@ -493,8 +493,8 @@ DEFUN (interface_area_passive, return ospf6_interface_bind_area (vty, argv[0], argv[1], NULL, 1); } -DEFUN (no_interface_area, - no_interface_area_cmd, +DEFUN (no_ospf6_interface_area, + no_ospf6_interface_area_cmd, "no interface IFNAME area A.B.C.D", NO_STR "Disable routing on an IPv6 interface\n" @@ -570,8 +570,8 @@ DEFUN (ospf6_area_range, return CMD_SUCCESS; } -DEFUN (passive_interface, - passive_interface_cmd, +DEFUN (ospf6_passive_interface, + ospf6_passive_interface_cmd, "passive-interface IFNAME", OSPF6_PASSIVE_STR IFNAME_STR) @@ -596,8 +596,8 @@ DEFUN (passive_interface, return CMD_SUCCESS; } -DEFUN (no_passive_interface, - no_passive_interface_cmd, +DEFUN (no_ospf6_passive_interface, + no_ospf6_passive_interface_cmd, "no passive-interface IFNAME", NO_STR OSPF6_PASSIVE_STR @@ -712,6 +712,7 @@ struct cmd_node ospf6_node = { OSPF6_NODE, "%s(config-ospf6)# ", + vtysh: 1 }; /* Install ospf related commands. */ @@ -728,6 +729,7 @@ ospf6_init () install_element (ENABLE_NODE, &reload_cmd); install_element (CONFIG_NODE, &router_ospf6_cmd); install_element (CONFIG_NODE, &interface_cmd); + install_element (CONFIG_NODE, &no_interface_cmd); #ifdef OSPF6_STATISTICS install_element (VIEW_NODE, &show_ipv6_ospf6_statistics_cmd); install_element (ENABLE_NODE, &show_ipv6_ospf6_statistics_cmd); @@ -740,14 +742,14 @@ ospf6_init () #endif /* HAVE_SETPROCTITLE */ install_default (OSPF6_NODE); - install_element (OSPF6_NODE, &router_id_cmd); - install_element (OSPF6_NODE, &interface_area_cmd); - install_element (OSPF6_NODE, &interface_area_passive_cmd); - install_element (OSPF6_NODE, &interface_area_plist_cmd); - install_element (OSPF6_NODE, &interface_area_plist_passive_cmd); - install_element (OSPF6_NODE, &no_interface_area_cmd); - install_element (OSPF6_NODE, &passive_interface_cmd); - install_element (OSPF6_NODE, &no_passive_interface_cmd); + install_element (OSPF6_NODE, &ospf6_router_id_cmd); + install_element (OSPF6_NODE, &ospf6_interface_area_cmd); + install_element (OSPF6_NODE, &ospf6_interface_area_passive_cmd); + install_element (OSPF6_NODE, &ospf6_interface_area_plist_cmd); + install_element (OSPF6_NODE, &ospf6_interface_area_plist_passive_cmd); + install_element (OSPF6_NODE, &no_ospf6_interface_area_cmd); + install_element (OSPF6_NODE, &ospf6_passive_interface_cmd); + install_element (OSPF6_NODE, &no_ospf6_passive_interface_cmd); install_element (OSPF6_NODE, &ospf6_area_range_cmd); /* Make empty list of top list. */ diff --git a/ospf6d/ospf6d.h b/ospf6d/ospf6d.h index 862b3828..8c7af99e 100644 --- a/ospf6d/ospf6d.h +++ b/ospf6d/ospf6d.h @@ -94,7 +94,6 @@ extern char *recent_reason; /* Default port values. */ #define OSPF6_VTY_PORT 2606 -#define OSPF6_VTYSH_PATH "/tmp/.ospf6d" #ifdef INRIA_IPV6 #ifndef IPV6_PKTINFO diff --git a/ospfclient/.cvsignore b/ospfclient/.cvsignore new file mode 100644 index 00000000..818e8fa8 --- /dev/null +++ b/ospfclient/.cvsignore @@ -0,0 +1,7 @@ +Makefile +Makefile.in +*.o +ospfclient +tags +TAGS +.deps diff --git a/ospfclient/AUTHORS b/ospfclient/AUTHORS new file mode 100644 index 00000000..b865c550 --- /dev/null +++ b/ospfclient/AUTHORS @@ -0,0 +1 @@ +Ralph Keller <keller@tik.ee.ethz.ch> diff --git a/ospfclient/COPYING b/ospfclient/COPYING new file mode 100644 index 00000000..a43ea212 --- /dev/null +++ b/ospfclient/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ospfclient/ChangeLog b/ospfclient/ChangeLog new file mode 100644 index 00000000..275b14ef --- /dev/null +++ b/ospfclient/ChangeLog @@ -0,0 +1,57 @@ +2003-01-10 Ralph Keller <keller@tik.ee.ethz.ch> + * New ChangeLog + +2003-01-08 Ralph Keller <keller@tik.ee.ethz.ch> + * apiclient message passing bug resolved + * (proposed by Masahiko) + +2002-10-09 Ralph Keller <keller@tik.ee.ethz.ch> + * Includes patch in OSPFd for ISM, NSM, neighbor + +2002-09-16 Ralph Keller <keller@tik.ee.ethz.ch> + * Current patch vs. Zebra-0.93b + +2002-08-22 Ralph Keller <keller@tik.ee.ethz.ch> + * Bugfix: LSA updates are now received only once even + * if multiple opaque types are registered + +2002-08-06 Ralph Keller <keller@tik.ee.ethz.ch> + * Upgrade of OSPF API to Zebra-0.93a. + +2002-06-13 Ralph Keller <keller@tik.ee.ethz.ch> + * Opaque LSA origination bug fixed by Masahiko. + * This code is based on 0.93-pre + +2002-05-03 Ralph Keller <keller@tik.ee.ethz.ch> + * Upgrade to newest Zebra from CVS repository. ospf_flood_through + * function did not work after upgrade. Function + * ospf_apiserver_flood_opaque_lsa added. Also byte order problem + * with port numbers resolved. + +2002-05-02 Ralph Keller <keller@tik.ee.ethz.ch> + + * new autoconf and automake files, now called configure.in + * instead of configure.ac + +2002-04-24 Ralph Keller <keller@tik.ee.ethz.ch> + + * reverse channel now works (syncport and syncport+1) + * ospf_apiclient.c: standard includes removed (not needed) + * bzero replaced with memset + +2002-04-18 Ralph Keller <keller@tik.ee.ethz.ch> + + * 2-way phase connection setup + +2002-04-05 Ralph Keller <keller@tik.ee.ethz.ch> + + * Changes incorporated as proposed by Masahiko + +2002-04-05 Ralph Keller <keller@tik.ee.ethz.ch> + + * autoconf and automake-style Makefile + +2002-04-04 Ralph Keller <keller@tik.ee.ethz.ch> + + * 1st public release of OSPF API + diff --git a/ospfclient/INSTALL b/ospfclient/INSTALL new file mode 100644 index 00000000..b42a17ac --- /dev/null +++ b/ospfclient/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/ospfclient/Makefile.am b/ospfclient/Makefile.am index fb041af9..95a74eec 100644 --- a/ospfclient/Makefile.am +++ b/ospfclient/Makefile.am @@ -16,6 +16,6 @@ ospfapiheader_HEADERS = \ ospfclient_SOURCES = \ ospfclient.c $(libospfapiclient_a_SOURCES) -ospfclient_LDADD = ../ospfd/libospf.a ../lib/libzebra.a @LIBCAP@ +ospfclient_LDADD = ../ospfd/libospf.a ../lib/libzebra.a diff --git a/ospfclient/NEWS b/ospfclient/NEWS new file mode 100644 index 00000000..5b1ec4fd --- /dev/null +++ b/ospfclient/NEWS @@ -0,0 +1 @@ +This file contains news. diff --git a/ospfclient/README b/ospfclient/README new file mode 100644 index 00000000..894cd783 --- /dev/null +++ b/ospfclient/README @@ -0,0 +1,4 @@ +For more information about this software check out: + +http://www.tik.ee.ethz.ch/~keller/ospfapi/ + diff --git a/ospfclient/ospf_apiclient.c b/ospfclient/ospf_apiclient.c new file mode 100644 index 00000000..3a62a423 --- /dev/null +++ b/ospfclient/ospf_apiclient.c @@ -0,0 +1,747 @@ +/* + * Client side of OSPF API. + * Copyright (C) 2001, 2002, 2003 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <zebra.h> + +#include "version.h" +#include "getopt.h" +#include "thread.h" +#include "prefix.h" +#include "linklist.h" +#include "if.h" +#include "vector.h" +#include "vty.h" +#include "command.h" +#include "filter.h" +#include "stream.h" +#include "log.h" +#include "memory.h" + +#include "ospfd/ospfd.h" +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_opaque.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_dump.h" +#include "ospfd/ospf_zebra.h" +#include "ospfd/ospf_api.h" + +#include "ospf_apiclient.h" + +/* Backlog for listen */ +#define BACKLOG 5 + +/* ----------------------------------------------------------- + * Forward declarations + * ----------------------------------------------------------- + */ + +void ospf_apiclient_handle_reply (struct ospf_apiclient *oclient, + struct msg *msg); +void ospf_apiclient_handle_update_notify (struct ospf_apiclient *oclient, + struct msg *msg); +void ospf_apiclient_handle_delete_notify (struct ospf_apiclient *oclient, + struct msg *msg); + +/* ----------------------------------------------------------- + * Initialization + * ----------------------------------------------------------- + */ + +unsigned short +ospf_apiclient_getport (void) +{ + struct servent *sp = getservbyname ("ospfapi", "tcp"); + + return sp ? ntohs (sp->s_port) : OSPF_API_SYNC_PORT; +} + +/* ----------------------------------------------------------- + * Followings are functions for connection management + * ----------------------------------------------------------- + */ + +struct ospf_apiclient * +ospf_apiclient_connect (char *host, int syncport) +{ + struct sockaddr_in myaddr_sync; + struct sockaddr_in myaddr_async; + struct sockaddr_in peeraddr; + struct hostent *hp; + struct ospf_apiclient *new; + int size = 0; + int peeraddrlen; + int async_server_sock; + int fd1, fd2; + int ret; + int on = 1; + + /* There are two connections between the client and the server. + First the client opens a connection for synchronous requests/replies + to the server. The server will accept this connection and + as a reaction open a reverse connection channel for + asynchronous messages. */ + + async_server_sock = socket (AF_INET, SOCK_STREAM, 0); + if (async_server_sock < 0) + { + fprintf (stderr, + "ospf_apiclient_connect: creating async socket failed\n"); + return NULL; + } + + /* Prepare socket for asynchronous messages */ + /* Initialize async address structure */ + memset (&myaddr_async, 0, sizeof (struct sockaddr_in)); + myaddr_async.sin_family = AF_INET; + myaddr_async.sin_addr.s_addr = htonl (INADDR_ANY); + myaddr_async.sin_port = htons (syncport+1); + size = sizeof (struct sockaddr_in); +#ifdef HAVE_SIN_LEN + myaddr_async.sin_len = size; +#endif /* HAVE_SIN_LEN */ + + /* This is a server socket, reuse addr and port */ + ret = setsockopt (async_server_sock, SOL_SOCKET, + SO_REUSEADDR, (void *) &on, sizeof (on)); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: SO_REUSEADDR failed\n"); + close (async_server_sock); + return NULL; + } + +#ifdef SO_REUSEPORT + ret = setsockopt (async_server_sock, SOL_SOCKET, SO_REUSEPORT, + (void *) &on, sizeof (on)); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: SO_REUSEPORT failed\n"); + close (async_server_sock); + return NULL; + } +#endif /* SO_REUSEPORT */ + + /* Bind socket to address structure */ + ret = bind (async_server_sock, (struct sockaddr *) &myaddr_async, size); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: bind async socket failed\n"); + close (async_server_sock); + return NULL; + } + + /* Wait for reverse channel connection establishment from server */ + ret = listen (async_server_sock, BACKLOG); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: listen: %s\n", strerror (errno)); + close (async_server_sock); + return NULL; + } + + /* Make connection for synchronous requests and connect to server */ + /* Resolve address of server */ + hp = gethostbyname (host); + if (!hp) + { + fprintf (stderr, "ospf_apiclient_connect: no such host %s\n", host); + close (async_server_sock); + return NULL; + } + + fd1 = socket (AF_INET, SOCK_STREAM, 0); + if (fd1 < 0) + { + fprintf (stderr, + "ospf_apiclient_connect: creating sync socket failed\n"); + return NULL; + } + + + /* Reuse addr and port */ + ret = setsockopt (fd1, SOL_SOCKET, + SO_REUSEADDR, (void *) &on, sizeof (on)); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: SO_REUSEADDR failed\n"); + close (fd1); + return NULL; + } + +#ifdef SO_REUSEPORT + ret = setsockopt (fd1, SOL_SOCKET, SO_REUSEPORT, + (void *) &on, sizeof (on)); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: SO_REUSEPORT failed\n"); + close (fd1); + return NULL; + } +#endif /* SO_REUSEPORT */ + + + /* Bind sync socket to address structure. This is needed since we + want the sync port number on a fixed port number. The reverse + async channel will be at this port+1 */ + + memset (&myaddr_sync, 0, sizeof (struct sockaddr_in)); + myaddr_sync.sin_family = AF_INET; + myaddr_sync.sin_port = htons (syncport); +#ifdef HAVE_SIN_LEN + myaddr_sync.sin_len = sizeof (struct sockaddr_in); +#endif /* HAVE_SIN_LEN */ + + ret = bind (fd1, (struct sockaddr *) &myaddr_sync, size); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: bind sync socket failed\n"); + close (fd1); + return NULL; + } + + /* Prepare address structure for connect */ + memcpy (&myaddr_sync.sin_addr, hp->h_addr, hp->h_length); + myaddr_sync.sin_family = AF_INET; + myaddr_sync.sin_port = htons(ospf_apiclient_getport ()); +#ifdef HAVE_SIN_LEN + myaddr_sync.sin_len = sizeof (struct sockaddr_in); +#endif /* HAVE_SIN_LEN */ + + /* Now establish synchronous channel with OSPF daemon */ + ret = connect (fd1, (struct sockaddr *) &myaddr_sync, + sizeof (struct sockaddr_in)); + if (ret < 0) + { + fprintf (stderr, "ospf_apiclient_connect: sync connect failed\n"); + close (async_server_sock); + close (fd1); + return NULL; + } + + /* Accept reverse connection */ + peeraddrlen = sizeof (struct sockaddr_in); + memset (&peeraddr, 0, peeraddrlen); + + fd2 = + accept (async_server_sock, (struct sockaddr *) &peeraddr, &peeraddrlen); + if (fd2 < 0) + { + fprintf (stderr, "ospf_apiclient_connect: accept async failed\n"); + close (async_server_sock); + close (fd1); + return NULL; + } + + /* Server socket is not needed anymore since we are not accepting more + connections */ + close (async_server_sock); + + /* Create new client-side instance */ + new = XMALLOC (MTYPE_OSPF_APICLIENT, sizeof (struct ospf_apiclient)); + memset (new, 0, sizeof (struct ospf_apiclient)); + + /* Initialize socket descriptors for sync and async channels */ + new->fd_sync = fd1; + new->fd_async = fd2; + + return new; +} + +int +ospf_apiclient_close (struct ospf_apiclient *oclient) +{ + + if (oclient->fd_sync >= 0) + { + close (oclient->fd_sync); + } + + if (oclient->fd_async >= 0) + { + close (oclient->fd_async); + } + + /* Free client structure */ + XFREE (MTYPE_OSPF_APICLIENT, oclient); + return 0; +} + +/* ----------------------------------------------------------- + * Followings are functions to send a request to OSPFd + * ----------------------------------------------------------- + */ + +/* Send synchronous request, wait for reply */ +int +ospf_apiclient_send_request (struct ospf_apiclient *oclient, struct msg *msg) +{ + u_int32_t reqseq; + struct msg_reply *msgreply; + int rc; + + /* NB: Given "msg" is freed inside this function. */ + + /* Remember the sequence number of the request */ + reqseq = ntohl (msg->hdr.msgseq); + + /* Write message to OSPFd */ + rc = msg_write (oclient->fd_sync, msg); + msg_free (msg); + + if (rc < 0) + { + return -1; + } + + /* Wait for reply *//* NB: New "msg" is allocated by "msg_read()". */ + msg = msg_read (oclient->fd_sync); + if (!msg) + return -1; + + assert (msg->hdr.msgtype == MSG_REPLY); + assert (ntohl (msg->hdr.msgseq) == reqseq); + + msgreply = (struct msg_reply *) STREAM_DATA (msg->s); + rc = msgreply->errcode; + msg_free (msg); + + return rc; +} + + +/* ----------------------------------------------------------- + * Helper functions + * ----------------------------------------------------------- + */ + +static u_int32_t +ospf_apiclient_get_seqnr (void) +{ + static u_int32_t seqnr = MIN_SEQ; + u_int32_t tmp; + + tmp = seqnr; + /* Increment sequence number */ + if (seqnr < MAX_SEQ) + { + seqnr++; + } + else + { + seqnr = MIN_SEQ; + } + return tmp; +} + +/* ----------------------------------------------------------- + * API to access OSPF daemon by client applications. + * ----------------------------------------------------------- + */ + +/* + * Synchronous request to register opaque type. + */ +int +ospf_apiclient_register_opaque_type (struct ospf_apiclient *cl, + u_char ltype, u_char otype) +{ + struct msg *msg; + int rc; + + /* just put 1 as a sequence number. */ + msg = new_msg_register_opaque_type (ospf_apiclient_get_seqnr (), + ltype, otype); + if (!msg) + { + fprintf (stderr, "new_msg_register_opaque_type failed\n"); + return -1; + } + + rc = ospf_apiclient_send_request (cl, msg); + return rc; +} + +/* + * Synchronous request to synchronize with OSPF's LSDB. + * Two steps required: register_event in order to get + * dynamic updates and LSDB_Sync. + */ +int +ospf_apiclient_sync_lsdb (struct ospf_apiclient *oclient) +{ + struct msg *msg; + int rc; + struct lsa_filter_type filter; + + filter.typemask = 0xFFFF; /* all LSAs */ + filter.origin = ANY_ORIGIN; + filter.num_areas = 0; /* all Areas. */ + + msg = new_msg_register_event (ospf_apiclient_get_seqnr (), &filter); + if (!msg) + { + fprintf (stderr, "new_msg_register_event failed\n"); + return -1; + } + rc = ospf_apiclient_send_request (oclient, msg); + + if (rc != 0) + goto out; + + msg = new_msg_sync_lsdb (ospf_apiclient_get_seqnr (), &filter); + if (!msg) + { + fprintf (stderr, "new_msg_sync_lsdb failed\n"); + return -1; + } + rc = ospf_apiclient_send_request (oclient, msg); + +out: + return rc; +} + +/* + * Synchronous request to originate or update an LSA. + */ + +int +ospf_apiclient_lsa_originate (struct ospf_apiclient *oclient, + struct in_addr ifaddr, + struct in_addr area_id, + u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id, + void *opaquedata, int opaquelen) +{ + struct msg *msg; + int rc; + u_char buf[OSPF_MAX_LSA_SIZE]; + struct lsa_header *lsah; + u_int32_t tmp; + + + /* We can only originate opaque LSAs */ + if (!IS_OPAQUE_LSA (lsa_type)) + { + fprintf (stderr, "Cannot originate non-opaque LSA type %d\n", lsa_type); + return OSPF_API_ILLEGALLSATYPE; + } + + /* Make a new LSA from parameters */ + lsah = (struct lsa_header *) buf; + lsah->ls_age = 0; + lsah->options = 0; + lsah->type = lsa_type; + + tmp = SET_OPAQUE_LSID (opaque_type, opaque_id); + lsah->id.s_addr = htonl (tmp); + lsah->adv_router.s_addr = 0; + lsah->ls_seqnum = 0; + lsah->checksum = 0; + lsah->length = htons (sizeof (struct lsa_header) + opaquelen); + + memcpy (((u_char *) lsah) + sizeof (struct lsa_header), opaquedata, + opaquelen); + + msg = new_msg_originate_request (ospf_apiclient_get_seqnr (), + ifaddr, area_id, lsah); + if (!msg) + { + fprintf (stderr, "new_msg_originate_request failed\n"); + return OSPF_API_NOMEMORY; + } + + rc = ospf_apiclient_send_request (oclient, msg); + return rc; +} + +int +ospf_apiclient_lsa_delete (struct ospf_apiclient *oclient, + struct in_addr area_id, u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id) +{ + struct msg *msg; + int rc; + + /* Only opaque LSA can be deleted */ + if (!IS_OPAQUE_LSA (lsa_type)) + { + fprintf (stderr, "Cannot delete non-opaque LSA type %d\n", lsa_type); + return OSPF_API_ILLEGALLSATYPE; + } + + /* opaque_id is in host byte order and will be converted + * to network byte order by new_msg_delete_request */ + msg = new_msg_delete_request (ospf_apiclient_get_seqnr (), + area_id, lsa_type, opaque_type, opaque_id); + + rc = ospf_apiclient_send_request (oclient, msg); + return rc; +} + +/* ----------------------------------------------------------- + * Followings are handlers for messages from OSPF daemon + * ----------------------------------------------------------- + */ + +void +ospf_apiclient_handle_ready (struct ospf_apiclient *oclient, struct msg *msg) +{ + struct msg_ready_notify *r; + r = (struct msg_ready_notify *) STREAM_DATA (msg->s); + + /* Invoke registered callback function. */ + if (oclient->ready_notify) + { + (oclient->ready_notify) (r->lsa_type, r->opaque_type, r->addr); + } +} + +void +ospf_apiclient_handle_new_if (struct ospf_apiclient *oclient, struct msg *msg) +{ + struct msg_new_if *n; + n = (struct msg_new_if *) STREAM_DATA (msg->s); + + /* Invoke registered callback function. */ + if (oclient->new_if) + { + (oclient->new_if) (n->ifaddr, n->area_id); + } +} + +void +ospf_apiclient_handle_del_if (struct ospf_apiclient *oclient, struct msg *msg) +{ + struct msg_del_if *d; + d = (struct msg_del_if *) STREAM_DATA (msg->s); + + /* Invoke registered callback function. */ + if (oclient->del_if) + { + (oclient->del_if) (d->ifaddr); + } +} + +void +ospf_apiclient_handle_ism_change (struct ospf_apiclient *oclient, + struct msg *msg) +{ + struct msg_ism_change *m; + m = (struct msg_ism_change *) STREAM_DATA (msg->s); + + /* Invoke registered callback function. */ + if (oclient->ism_change) + { + (oclient->ism_change) (m->ifaddr, m->area_id, m->status); + } + +} + +void +ospf_apiclient_handle_nsm_change (struct ospf_apiclient *oclient, + struct msg *msg) +{ + struct msg_nsm_change *m; + m = (struct msg_nsm_change *) STREAM_DATA (msg->s); + + /* Invoke registered callback function. */ + if (oclient->nsm_change) + { + (oclient->nsm_change) (m->ifaddr, m->nbraddr, m->router_id, m->status); + } +} + +void +ospf_apiclient_handle_lsa_update (struct ospf_apiclient *oclient, + struct msg *msg) +{ + struct msg_lsa_change_notify *cn; + struct lsa_header *lsa; + int lsalen; + + cn = (struct msg_lsa_change_notify *) STREAM_DATA (msg->s); + + /* Extract LSA from message */ + lsalen = ntohs (cn->data.length); + lsa = XMALLOC (MTYPE_OSPF_APICLIENT, lsalen); + if (!lsa) + { + fprintf (stderr, "LSA update: Cannot allocate memory for LSA\n"); + return; + } + memcpy (lsa, &(cn->data), lsalen); + + /* Invoke registered update callback function */ + if (oclient->update_notify) + { + (oclient->update_notify) (cn->ifaddr, cn->area_id, + cn->is_self_originated, lsa); + } + + /* free memory allocated by ospf apiclient library */ + XFREE (MTYPE_OSPF_APICLIENT, lsa); +} + +void +ospf_apiclient_handle_lsa_delete (struct ospf_apiclient *oclient, + struct msg *msg) +{ + struct msg_lsa_change_notify *cn; + struct lsa_header *lsa; + int lsalen; + + cn = (struct msg_lsa_change_notify *) STREAM_DATA (msg->s); + + /* Extract LSA from message */ + lsalen = ntohs (cn->data.length); + lsa = XMALLOC (MTYPE_OSPF_APICLIENT, lsalen); + if (!lsa) + { + fprintf (stderr, "LSA delete: Cannot allocate memory for LSA\n"); + return; + } + memcpy (lsa, &(cn->data), lsalen); + + /* Invoke registered update callback function */ + if (oclient->delete_notify) + { + (oclient->delete_notify) (cn->ifaddr, cn->area_id, + cn->is_self_originated, lsa); + } + + /* free memory allocated by ospf apiclient library */ + XFREE (MTYPE_OSPF_APICLIENT, lsa); +} + +void +ospf_apiclient_msghandle (struct ospf_apiclient *oclient, struct msg *msg) +{ + /* Call message handler function. */ + switch (msg->hdr.msgtype) + { + case MSG_READY_NOTIFY: + ospf_apiclient_handle_ready (oclient, msg); + break; + case MSG_NEW_IF: + ospf_apiclient_handle_new_if (oclient, msg); + break; + case MSG_DEL_IF: + ospf_apiclient_handle_del_if (oclient, msg); + break; + case MSG_ISM_CHANGE: + ospf_apiclient_handle_ism_change (oclient, msg); + break; + case MSG_NSM_CHANGE: + ospf_apiclient_handle_nsm_change (oclient, msg); + break; + case MSG_LSA_UPDATE_NOTIFY: + ospf_apiclient_handle_lsa_update (oclient, msg); + break; + case MSG_LSA_DELETE_NOTIFY: + ospf_apiclient_handle_lsa_delete (oclient, msg); + break; + default: + fprintf (stderr, "ospf_apiclient_read: Unknown message type: %d\n", + msg->hdr.msgtype); + break; + } +} + +/* ----------------------------------------------------------- + * Callback handler registration + * ----------------------------------------------------------- + */ + +void +ospf_apiclient_register_callback (struct ospf_apiclient *oclient, + void (*ready_notify) (u_char lsa_type, + u_char opaque_type, + struct in_addr addr), + void (*new_if) (struct in_addr ifaddr, + struct in_addr area_id), + void (*del_if) (struct in_addr ifaddr), + void (*ism_change) (struct in_addr ifaddr, + struct in_addr area_id, + u_char status), + void (*nsm_change) (struct in_addr ifaddr, + struct in_addr nbraddr, + struct in_addr + router_id, + u_char status), + void (*update_notify) (struct in_addr + ifaddr, + struct in_addr + area_id, + u_char self_origin, + struct lsa_header * + lsa), + void (*delete_notify) (struct in_addr + ifaddr, + struct in_addr + area_id, + u_char self_origin, + struct lsa_header * + lsa)) +{ + assert (oclient); + assert (update_notify); + + /* Register callback function */ + oclient->ready_notify = ready_notify; + oclient->new_if = new_if; + oclient->del_if = del_if; + oclient->ism_change = ism_change; + oclient->nsm_change = nsm_change; + oclient->update_notify = update_notify; + oclient->delete_notify = delete_notify; +} + +/* ----------------------------------------------------------- + * Asynchronous message handling + * ----------------------------------------------------------- + */ + +int +ospf_apiclient_handle_async (struct ospf_apiclient *oclient) +{ + struct msg *msg; + + /* Get a message */ + msg = msg_read (oclient->fd_async); + + if (!msg) + { + /* Connection broke down */ + return -1; + } + + /* Handle message */ + ospf_apiclient_msghandle (oclient, msg); + + /* Don't forget to free this message */ + msg_free (msg); + + return 0; +} diff --git a/ospfclient/ospf_apiclient.h b/ospfclient/ospf_apiclient.h new file mode 100644 index 00000000..0e74787a --- /dev/null +++ b/ospfclient/ospf_apiclient.h @@ -0,0 +1,135 @@ +/* + * Client side of OSPF API. + * Copyright (C) 2001, 2002, 2003 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _OSPF_APICLIENT_H +#define _OSPF_APICLIENT_H + +#define MTYPE_OSPF_APICLIENT 0 + +/* Structure for the OSPF API client */ +struct ospf_apiclient +{ + + /* Sockets for sync requests and async notifications */ + int fd_sync; + int fd_async; + + /* Pointer to callback functions */ + void (*ready_notify) (u_char lsa_type, u_char opaque_type, + struct in_addr addr); + void (*new_if) (struct in_addr ifaddr, struct in_addr area_id); + void (*del_if) (struct in_addr ifaddr); + void (*ism_change) (struct in_addr ifaddr, struct in_addr area_id, + u_char status); + void (*nsm_change) (struct in_addr ifaddr, struct in_addr nbraddr, + struct in_addr router_id, u_char status); + void (*update_notify) (struct in_addr ifaddr, struct in_addr area_id, + u_char self_origin, + struct lsa_header * lsa); + void (*delete_notify) (struct in_addr ifaddr, struct in_addr area_id, + u_char self_origin, + struct lsa_header * lsa); +}; + + +/* --------------------------------------------------------- + * API function prototypes. + * --------------------------------------------------------- */ + +/* Open connection to OSPF daemon. Two ports will be allocated on + client, sync channel at syncport and reverse channel at syncport+1 */ +struct ospf_apiclient *ospf_apiclient_connect (char *host, int syncport); + +/* Shutdown connection to OSPF daemon. */ +int ospf_apiclient_close (struct ospf_apiclient *oclient); + +/* Synchronous request to register opaque type. */ +int ospf_apiclient_register_opaque_type (struct ospf_apiclient *oclient, + u_char ltype, u_char otype); + +/* Synchronous request to register event mask. */ +int ospf_apiclient_register_events (struct ospf_apiclient *oclient, + u_int32_t mask); + +/* Register callback functions.*/ +void ospf_apiclient_register_callback (struct ospf_apiclient *oclient, + void (*ready_notify) (u_char lsa_type, + u_char + opaque_type, + struct in_addr + addr), + void (*new_if) (struct in_addr ifaddr, + struct in_addr + area_id), + void (*del_if) (struct in_addr ifaddr), + void (*ism_change) (struct in_addr + ifaddr, + struct in_addr + area_id, + u_char status), + void (*nsm_change) (struct in_addr + ifaddr, + struct in_addr + nbraddr, + struct in_addr + router_id, + u_char status), + void (*update_notify) (struct in_addr + ifaddr, + struct in_addr + area_id, + u_char selforig, + struct + lsa_header * + lsa), + void (*delete_notify) (struct in_addr + ifaddr, + struct in_addr + area_id, + u_char selforig, + struct + lsa_header * + lsa)); + +/* Synchronous request to synchronize LSDB. */ +int ospf_apiclient_sync_lsdb (struct ospf_apiclient *oclient); + +/* Synchronous request to originate or update opaque LSA. */ +int +ospf_apiclient_lsa_originate(struct ospf_apiclient *oclient, + struct in_addr ifaddr, + struct in_addr area_id, + u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id, + void *opaquedata, int opaquelen); + + +/* Synchronous request to delete opaque LSA. Parameter opaque_id is in + host byte order */ +int ospf_apiclient_lsa_delete (struct ospf_apiclient *oclient, + struct in_addr area_id, u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id); + +/* Fetch async message and handle it */ +int ospf_apiclient_handle_async (struct ospf_apiclient *oclient); + +#endif /* _OSPF_APICLIENT_H */ diff --git a/ospfclient/ospfclient.c b/ospfclient/ospfclient.c index 28010872..ec1aabcb 100644 --- a/ospfclient/ospfclient.c +++ b/ospfclient/ospfclient.c @@ -11,8 +11,6 @@ #include <zebra.h> #include "prefix.h" /* needed by ospf_asbr.h */ -#include "privs.h" - #include "ospfd/ospfd.h" #include "ospfd/ospf_asbr.h" #include "ospfd/ospf_lsa.h" @@ -20,18 +18,6 @@ #include "ospfd/ospf_api.h" #include "ospf_apiclient.h" -/* privileges struct. - * set cap_num_* and uid/gid to nothing to use NULL privs - * as ospfapiclient links in libospf.a which uses privs. - */ -struct zebra_privs_t ospfd_privs = -{ - .user = NULL, - .group = NULL, - .cap_num_p = 0, - .cap_num_i = 0 -}; - /* The following includes are specific to this application. For example it uses threads from libzebra, however your application is free to use any thread library (like pthreads). */ @@ -288,7 +274,6 @@ main (int argc, char *argv[]) } /* Initialization */ - zprivs_init (&ospfd_privs); master = thread_master_create (); /* Open connection to OSPF daemon */ diff --git a/ospfd/.cvsignore b/ospfd/.cvsignore index d7e3a7e2..876c4348 100644 --- a/ospfd/.cvsignore +++ b/ospfd/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o ospfd ospfd.conf diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog index b7794f72..7720adcc 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,50 @@ +2003-05-24 Kenji Yabuuchi + + * ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific + match for interface lookup. + +2003-05-18 Hasso Tepper <hasso@estpak.ee> + + * ospf_vty.c: Show NSSA LSA route info in "show ip ospf database" + output + +2003-05-16 Hasso Tepper <hasso@estpak.ee> + + * ospf_lsa.c: Fix handling of NSSA + +2003-04-23 Hasso Tepper <hasso@estpak.ee> + + * ospf_vty.c: fix "router xxx" node commands in vtysh + +2003-04-19 Hasso Tepper <hasso@estpak.ee> + + * {ospf_abr,ospfd}.c: area id's DECIMAL -> ADDRESS + * ospf_routemap.c: sync daemon's route-map commands to have same + syntax. + +2003-04-19 Sergey Vyshnevetskiy <serg@vostok.net> + + * ospf_packet.c: Add missing param to zlog + * ospf_flood.c: remove unused vars + +2003-04-17 Denis Ovsienko <zebra@pilot.org.ua> + + * ospf_interface.c: fix incorrect memset + +2003-04-10 Amir Guindehi <amir@datacore.ch> + + * ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup. + +2003-04-03 David Watson <dwatson@eecs.umich.edu> + + * ospf_lsa.c: byte order fix + +2002-03-17 Amir Guindehi <amir@datacore.ch> + + * ospf_apiserver.[ch]: Merge Ralph Keller's OSPFAPI support. + * ospf_api.[ch]: Merge Ralph Keller's OSPFAPI support. + * ospfclient: OSPFAPI demonstration client. + 2003-01-23 Masahiko Endo <endo@suri.co.jp> * ospf_ism.c: NSM event schedule bug fix. diff --git a/ospfd/Makefile.am b/ospfd/Makefile.am index 81f212c4..81315dae 100644 --- a/ospfd/Makefile.am +++ b/ospfd/Makefile.am @@ -28,7 +28,7 @@ noinst_HEADERS = \ ospfd_SOURCES = \ ospf_main.c $(libospf_a_SOURCES) -ospfd_LDADD = -L../lib -lzebra @LIBCAP@ +ospfd_LDADD = -L../lib -lzebra sysconf_DATA = ospfd.conf.sample diff --git a/ospfd/Makefile.in b/ospfd/Makefile.in deleted file mode 100644 index 7182572a..00000000 --- a/ospfd/Makefile.in +++ /dev/null @@ -1,461 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\" -INSTALL_SDATA = @INSTALL@ -m 600 - -noinst_LIBRARIES = libospf.a -sbin_PROGRAMS = ospfd - -libospf_a_SOURCES = \ - ospfd.c ospf_zebra.c ospf_interface.c ospf_ism.c ospf_neighbor.c \ - ospf_nsm.c ospf_dump.c ospf_network.c ospf_packet.c ospf_lsa.c \ - ospf_spf.c ospf_route.c ospf_ase.c ospf_abr.c ospf_ia.c ospf_flood.c \ - ospf_lsdb.c ospf_asbr.c ospf_routemap.c ospf_snmp.c \ - ospf_opaque.c ospf_te.c ospf_vty.c - - -noinst_HEADERS = \ - ospf_dump.h ospf_interface.h ospf_ism.h ospf_neighbor.h \ - ospf_network.h ospf_nsm.h ospf_packet.h ospf_zebra.h ospfd.h \ - ospf_lsa.h ospf_spf.h ospf_route.h ospf_ase.h ospf_abr.h ospf_ia.h \ - ospf_flood.h ospf_lsdb.h ospf_asbr.h ospf_snmp.h ospf_opaque.h \ - ospf_te.h ospf_vty.h - - -ospfd_SOURCES = \ - ospf_main.c $(libospf_a_SOURCES) - - -ospfd_LDADD = ../lib/libzebra.a - -sysconf_DATA = ospfd.conf.sample - -EXTRA_DIST = $(sysconf_DATA) OSPF-MIB.txt OSPF-TRAP-MIB.txt ChangeLog.opaque.txt -subdir = ospfd -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libospf_a_AR = $(AR) cru -libospf_a_LIBADD = -am_libospf_a_OBJECTS = ospfd.$(OBJEXT) ospf_zebra.$(OBJEXT) \ - ospf_interface.$(OBJEXT) ospf_ism.$(OBJEXT) \ - ospf_neighbor.$(OBJEXT) ospf_nsm.$(OBJEXT) ospf_dump.$(OBJEXT) \ - ospf_network.$(OBJEXT) ospf_packet.$(OBJEXT) ospf_lsa.$(OBJEXT) \ - ospf_spf.$(OBJEXT) ospf_route.$(OBJEXT) ospf_ase.$(OBJEXT) \ - ospf_abr.$(OBJEXT) ospf_ia.$(OBJEXT) ospf_flood.$(OBJEXT) \ - ospf_lsdb.$(OBJEXT) ospf_asbr.$(OBJEXT) ospf_routemap.$(OBJEXT) \ - ospf_snmp.$(OBJEXT) ospf_opaque.$(OBJEXT) ospf_te.$(OBJEXT) \ - ospf_vty.$(OBJEXT) -libospf_a_OBJECTS = $(am_libospf_a_OBJECTS) -sbin_PROGRAMS = ospfd$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am__objects_1 = ospfd.$(OBJEXT) ospf_zebra.$(OBJEXT) \ - ospf_interface.$(OBJEXT) ospf_ism.$(OBJEXT) \ - ospf_neighbor.$(OBJEXT) ospf_nsm.$(OBJEXT) ospf_dump.$(OBJEXT) \ - ospf_network.$(OBJEXT) ospf_packet.$(OBJEXT) ospf_lsa.$(OBJEXT) \ - ospf_spf.$(OBJEXT) ospf_route.$(OBJEXT) ospf_ase.$(OBJEXT) \ - ospf_abr.$(OBJEXT) ospf_ia.$(OBJEXT) ospf_flood.$(OBJEXT) \ - ospf_lsdb.$(OBJEXT) ospf_asbr.$(OBJEXT) ospf_routemap.$(OBJEXT) \ - ospf_snmp.$(OBJEXT) ospf_opaque.$(OBJEXT) ospf_te.$(OBJEXT) \ - ospf_vty.$(OBJEXT) -am_ospfd_OBJECTS = ospf_main.$(OBJEXT) $(am__objects_1) -ospfd_OBJECTS = $(am_ospfd_OBJECTS) -ospfd_DEPENDENCIES = ../lib/libzebra.a -ospfd_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ospf_abr.Po ./$(DEPDIR)/ospf_asbr.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_ase.Po ./$(DEPDIR)/ospf_dump.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_flood.Po ./$(DEPDIR)/ospf_ia.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_interface.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_ism.Po ./$(DEPDIR)/ospf_lsa.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_lsdb.Po ./$(DEPDIR)/ospf_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_neighbor.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_network.Po ./$(DEPDIR)/ospf_nsm.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_opaque.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_packet.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_route.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_routemap.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_snmp.Po ./$(DEPDIR)/ospf_spf.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_te.Po ./$(DEPDIR)/ospf_vty.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ospf_zebra.Po ./$(DEPDIR)/ospfd.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libospf_a_SOURCES) $(ospfd_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(libospf_a_SOURCES) $(ospfd_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign ospfd/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libospf.a: $(libospf_a_OBJECTS) $(libospf_a_DEPENDENCIES) - -rm -f libospf.a - $(libospf_a_AR) libospf.a $(libospf_a_OBJECTS) $(libospf_a_LIBADD) - $(RANLIB) libospf.a -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -ospfd$(EXEEXT): $(ospfd_OBJECTS) $(ospfd_DEPENDENCIES) - @rm -f ospfd$(EXEEXT) - $(LINK) $(ospfd_LDFLAGS) $(ospfd_OBJECTS) $(ospfd_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_abr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_asbr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ase.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_flood.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ia.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_interface.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ism.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_lsa.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_lsdb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_neighbor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_network.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_nsm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_opaque.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_packet.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_route.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_snmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_spf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_te.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_vty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_zebra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospfd.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES clean-sbinPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES clean-sbinPROGRAMS distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-sbinPROGRAMS install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am uninstall-sbinPROGRAMS uninstall-sysconfDATA - - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/ospfd/ospf_abr.c b/ospfd/ospf_abr.c index 181fe190..638cf1cc 100644 --- a/ospfd/ospf_abr.c +++ b/ospfd/ospf_abr.c @@ -201,7 +201,7 @@ ospf_area_range_set (struct ospf *ospf, struct in_addr area_id, { struct ospf_area *area; struct ospf_area_range *range; - int ret = OSPF_AREA_ID_FORMAT_DECIMAL; + int ret = OSPF_AREA_ID_FORMAT_ADDRESS; area = ospf_area_get (ospf, area_id, ret); if (area == NULL) @@ -237,7 +237,7 @@ ospf_area_range_cost_set (struct ospf *ospf, struct in_addr area_id, { struct ospf_area *area; struct ospf_area_range *range; - int ret = OSPF_AREA_ID_FORMAT_DECIMAL; + int ret = OSPF_AREA_ID_FORMAT_ADDRESS; area = ospf_area_get (ospf, area_id, ret); if (area == NULL) @@ -286,7 +286,7 @@ ospf_area_range_substitute_set (struct ospf *ospf, struct in_addr area_id, { struct ospf_area *area; struct ospf_area_range *range; - int ret = OSPF_AREA_ID_FORMAT_DECIMAL; + int ret = OSPF_AREA_ID_FORMAT_ADDRESS; area = ospf_area_get (ospf, area_id, ret); range = ospf_area_range_lookup (area, p); diff --git a/ospfd/ospf_abr.h b/ospfd/ospf_abr.h index c025f514..3b385c32 100644 --- a/ospfd/ospf_abr.h +++ b/ospfd/ospf_abr.h @@ -75,10 +75,10 @@ int ospf_area_range_substitute_unset (struct ospf *, struct in_addr, struct ospf_area_range *ospf_area_range_match_any (struct ospf *, struct prefix_ipv4 *); int ospf_area_range_active (struct ospf_area_range *); -int ospf_act_bb_connection (struct ospf *); +int ospf_act_bb_connection (); -void ospf_check_abr_status (struct ospf *); -void ospf_abr_task (struct ospf *); -void ospf_schedule_abr_task (struct ospf *); +void ospf_check_abr_status (); +void ospf_abr_task (); +void ospf_schedule_abr_task (); #endif /* _ZEBRA_OSPF_ABR_H */ diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c new file mode 100644 index 00000000..cd69336c --- /dev/null +++ b/ospfd/ospf_api.c @@ -0,0 +1,647 @@ +/* + * API message handling module for OSPF daemon and client. + * Copyright (C) 2001, 2002 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <zebra.h> + +#ifdef SUPPORT_OSPF_API +#ifndef HAVE_OPAQUE_LSA +#error "Core Opaque-LSA module must be configured." +#endif /* HAVE_OPAQUE_LSA */ + +#include "linklist.h" +#include "prefix.h" +#include "if.h" +#include "table.h" +#include "memory.h" +#include "command.h" +#include "vty.h" +#include "stream.h" +#include "log.h" +#include "thread.h" +#include "hash.h" +#include "sockunion.h" /* for inet_aton() */ +#include "buffer.h" +#include "network.h" + +#include "ospfd/ospfd.h" +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_ism.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_nsm.h" +#include "ospfd/ospf_flood.h" +#include "ospfd/ospf_packet.h" +#include "ospfd/ospf_spf.h" +#include "ospfd/ospf_dump.h" +#include "ospfd/ospf_route.h" +#include "ospfd/ospf_ase.h" +#include "ospfd/ospf_zebra.h" + +#include "ospfd/ospf_api.h" + + +/* For debugging only, will be removed */ +void +api_opaque_lsa_print (struct lsa_header *data) +{ + struct opaque_lsa + { + struct lsa_header header; + u_char mydata[0]; + }; + + struct opaque_lsa *olsa; + int opaquelen; + int i; + + ospf_lsa_header_dump (data); + + olsa = (struct opaque_lsa *) data; + + opaquelen = ntohs (data->length) - OSPF_LSA_HEADER_SIZE; + zlog_warn ("apiserver_lsa_print: opaquelen=%d\n", opaquelen); + + for (i = 0; i < opaquelen; i++) + { + zlog_warn ("0x%x ", olsa->mydata[i]); + } + zlog_warn ("\n"); +} + +/* ----------------------------------------------------------- + * Generic messages + * ----------------------------------------------------------- + */ + +struct msg * +msg_new (u_char msgtype, void *msgbody, u_int32_t seqnum, u_int16_t msglen) +{ + struct msg *new; + + new = XMALLOC (MTYPE_OSPF_API_MSG, sizeof (struct msg)); + memset (new, 0, sizeof (struct msg)); + + new->hdr.version = OSPF_API_VERSION; + new->hdr.msgtype = msgtype; + new->hdr.msglen = htons (msglen); + new->hdr.msgseq = htonl (seqnum); + + new->s = stream_new (msglen); + assert (new->s); + stream_put (new->s, msgbody, msglen); + + return new; +} + + +/* Duplicate a message by copying content. */ +struct msg * +msg_dup (struct msg *msg) +{ + struct msg *new; + + assert (msg); + + new = msg_new (msg->hdr.msgtype, STREAM_DATA (msg->s), + ntohl (msg->hdr.msgseq), ntohs (msg->hdr.msglen)); + return new; +} + + +/* XXX only for testing, will be removed */ + +struct nametab { + int value; + const char *name; +}; + +const char * +ospf_api_typename (int msgtype) +{ + struct nametab NameTab[] = { + { MSG_REGISTER_OPAQUETYPE, "Register opaque-type", }, + { MSG_UNREGISTER_OPAQUETYPE, "Unregister opaque-type", }, + { MSG_REGISTER_EVENT, "Register event", }, + { MSG_SYNC_LSDB, "Sync LSDB", }, + { MSG_ORIGINATE_REQUEST, "Originate request", }, + { MSG_DELETE_REQUEST, "Delete request", }, + { MSG_REPLY, "Reply", }, + { MSG_READY_NOTIFY, "Ready notify", }, + { MSG_LSA_UPDATE_NOTIFY, "LSA update notify", }, + { MSG_LSA_DELETE_NOTIFY, "LSA delete notify", }, + { MSG_NEW_IF, "New interface", }, + { MSG_DEL_IF, "Del interface", }, + { MSG_ISM_CHANGE, "ISM change", }, + { MSG_NSM_CHANGE, "NSM change", }, + }; + + int i, n = sizeof (NameTab) / sizeof (NameTab[0]); + const char *name = NULL; + + for (i = 0; i < n; i++) + { + if (NameTab[i].value == msgtype) + { + name = NameTab[i].name; + break; + } + } + + return name ? name : "?"; +} + +const char * +ospf_api_errname (int errcode) +{ + struct nametab NameTab[] = { + { OSPF_API_OK, "OK", }, + { OSPF_API_NOSUCHINTERFACE, "No such interface", }, + { OSPF_API_NOSUCHAREA, "No such area", }, + { OSPF_API_NOSUCHLSA, "No such LSA", }, + { OSPF_API_ILLEGALLSATYPE, "Illegal LSA type", }, + { OSPF_API_OPAQUETYPEINUSE, "Opaque type in use", }, + { OSPF_API_OPAQUETYPENOTREGISTERED, "Opaque type not registered", }, + { OSPF_API_NOTREADY, "Not ready", }, + { OSPF_API_NOMEMORY, "No memory", }, + { OSPF_API_ERROR, "Other error", }, + { OSPF_API_UNDEF, "Undefined", }, + }; + + int i, n = sizeof (NameTab) / sizeof (NameTab[0]); + const char *name = NULL; + + for (i = 0; i < n; i++) + { + if (NameTab[i].value == errcode) + { + name = NameTab[i].name; + break; + } + } + + return name ? name : "?"; +} + +void +msg_print (struct msg *msg) +{ + if (!msg) + { + zlog_warn ("msg_print msg=NULL!\n"); + return; + } + +#ifdef ORIGINAL_CODING + zlog_warn + ("msg=%p msgtype=%d msglen=%d msgseq=%d streamdata=%p streamsize=%lu\n", + msg, msg->hdr.msgtype, ntohs (msg->hdr.msglen), ntohl (msg->hdr.msgseq), + STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); +#else /* ORIGINAL_CODING */ + /* API message common header part. */ + zlog_info + ("API-msg [%s]: type(%d),len(%d),seq(%lu),data(%p),size(%lu)", + ospf_api_typename (msg->hdr.msgtype), msg->hdr.msgtype, + ntohs (msg->hdr.msglen), (unsigned long) ntohl (msg->hdr.msgseq), + STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); + + /* API message body part. */ +#ifdef ndef + /* Generic Hex/Ascii dump */ + DumpBuf (STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); /* Sorry, deleted! */ +#else /* ndef */ + /* Message-type dependent dump function. */ +#endif /* ndef */ + + return; +#endif /* ORIGINAL_CODING */ +} + +void +msg_free (struct msg *msg) +{ + if (msg->s) + stream_free (msg->s); + + XFREE (MTYPE_OSPF_API_MSG, msg); +} + + +/* Set sequence number of message */ +void +msg_set_seq (struct msg *msg, u_int32_t seqnr) +{ + assert (msg); + msg->hdr.msgseq = htonl (seqnr); +} + +/* Get sequence number of message */ +u_int32_t +msg_get_seq (struct msg *msg) +{ + assert (msg); + return ntohl (msg->hdr.msgseq); +} + +/* ----------------------------------------------------------- + * Message fifo queues + * ----------------------------------------------------------- + */ + +struct msg_fifo * +msg_fifo_new () +{ + struct msg_fifo *new; + + new = XMALLOC (MTYPE_OSPF_API_FIFO, sizeof (struct msg_fifo)); + memset (new, 0, sizeof (struct msg_fifo)); + + return new; +} + +/* Add new message to fifo. */ +void +msg_fifo_push (struct msg_fifo *fifo, struct msg *msg) +{ + if (fifo->tail) + fifo->tail->next = msg; + else + fifo->head = msg; + + fifo->tail = msg; + fifo->count++; +} + + +/* Remove first message from fifo. */ +struct msg * +msg_fifo_pop (struct msg_fifo *fifo) +{ + struct msg *msg; + + msg = fifo->head; + if (msg) + { + fifo->head = msg->next; + + if (fifo->head == NULL) + fifo->tail = NULL; + + fifo->count--; + } + return msg; +} + +/* Return first fifo entry but do not remove it. */ +struct msg * +msg_fifo_head (struct msg_fifo *fifo) +{ + return fifo->head; +} + +/* Flush message fifo. */ +void +msg_fifo_flush (struct msg_fifo *fifo) +{ + struct msg *op; + struct msg *next; + + for (op = fifo->head; op; op = next) + { + next = op->next; + msg_free (op); + } + + fifo->head = fifo->tail = NULL; + fifo->count = 0; +} + +/* Free API message fifo. */ +void +msg_fifo_free (struct msg_fifo *fifo) +{ + msg_fifo_flush (fifo); + + XFREE (MTYPE_OSPF_API_FIFO, fifo); +} + +struct msg * +msg_read (int fd) +{ + struct msg *msg; + struct apimsghdr hdr; + char buf[OSPF_API_MAX_MSG_SIZE]; + int bodylen; + int rlen; + + /* Read message header */ + rlen = readn (fd, (char *) &hdr, sizeof (struct apimsghdr)); + + if (rlen < 0) + { + zlog_warn ("msg_read: readn %s", strerror (errno)); + return NULL; + } + else if (rlen == 0) + { + zlog_warn ("msg_read: Connection closed by peer"); + return NULL; + } + else if (rlen != sizeof (struct apimsghdr)) + { + zlog_warn ("msg_read: Cannot read message header!"); + return NULL; + } + + /* Check version of API protocol */ + if (hdr.version != OSPF_API_VERSION) + { + zlog_warn ("msg_read: OSPF API protocol version mismatch"); + return NULL; + } + + /* Determine body length. */ + bodylen = ntohs (hdr.msglen); + if (bodylen > 0) + { + + /* Read message body */ + rlen = readn (fd, buf, bodylen); + if (rlen < 0) + { + zlog_warn ("msg_read: readn %s", strerror (errno)); + return NULL; + } + else if (rlen == 0) + { + zlog_warn ("msg_read: Connection closed by peer"); + return NULL; + } + else if (rlen != bodylen) + { + zlog_warn ("msg_read: Cannot read message body!"); + return NULL; + } + } + + /* Allocate new message */ + msg = msg_new (hdr.msgtype, buf, ntohl (hdr.msgseq), ntohs (hdr.msglen)); + + return msg; +} + +int +msg_write (int fd, struct msg *msg) +{ + u_char buf[OSPF_API_MAX_MSG_SIZE]; + int l; + int wlen; + + assert (msg); + assert (msg->s); + + /* Length of message including header */ + l = sizeof (struct apimsghdr) + ntohs (msg->hdr.msglen); + + /* Make contiguous memory buffer for message */ + memcpy (buf, &msg->hdr, sizeof (struct apimsghdr)); + memcpy (buf + sizeof (struct apimsghdr), STREAM_DATA (msg->s), + ntohs (msg->hdr.msglen)); + + wlen = writen (fd, buf, l); + if (wlen < 0) + { + zlog_warn ("msg_write: writen %s", strerror (errno)); + return -1; + } + else if (wlen == 0) + { + zlog_warn ("msg_write: Connection closed by peer"); + return -1; + } + else if (wlen != l) + { + zlog_warn ("msg_write: Cannot write API message"); + return -1; + } + return 0; +} + +/* ----------------------------------------------------------- + * Specific messages + * ----------------------------------------------------------- + */ + +struct msg * +new_msg_register_opaque_type (u_int32_t seqnum, u_char ltype, u_char otype) +{ + struct msg_register_opaque_type rmsg; + + rmsg.lsatype = ltype; + rmsg.opaquetype = otype; + memset (&rmsg.pad, 0, sizeof (rmsg.pad)); + + return msg_new (MSG_REGISTER_OPAQUETYPE, &rmsg, seqnum, + sizeof (struct msg_register_opaque_type)); +} + +struct msg * +new_msg_register_event (u_int32_t seqnum, struct lsa_filter_type *filter) +{ + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_register_event *emsg; + int len; + + emsg = (struct msg_register_event *) buf; + len = sizeof (struct msg_register_event) + + filter->num_areas * sizeof (struct in_addr); + emsg->filter.typemask = htons (filter->typemask); + emsg->filter.origin = filter->origin; + emsg->filter.num_areas = filter->num_areas; + return msg_new (MSG_REGISTER_EVENT, emsg, seqnum, len); +} + +struct msg * +new_msg_sync_lsdb (u_int32_t seqnum, struct lsa_filter_type *filter) +{ + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_sync_lsdb *smsg; + int len; + + smsg = (struct msg_sync_lsdb *) buf; + len = sizeof (struct msg_sync_lsdb) + + filter->num_areas * sizeof (struct in_addr); + smsg->filter.typemask = htons (filter->typemask); + smsg->filter.origin = filter->origin; + smsg->filter.num_areas = filter->num_areas; + return msg_new (MSG_SYNC_LSDB, smsg, seqnum, len); +} + + +struct msg * +new_msg_originate_request (u_int32_t seqnum, + struct in_addr ifaddr, + struct in_addr area_id, struct lsa_header *data) +{ + struct msg_originate_request *omsg; + int omsglen; + char buf[OSPF_API_MAX_MSG_SIZE]; + + omsglen = sizeof (struct msg_originate_request) - sizeof (struct lsa_header) + + ntohs (data->length); + + omsg = (struct msg_originate_request *) buf; + omsg->ifaddr = ifaddr; + omsg->area_id = area_id; + memcpy (&omsg->data, data, ntohs (data->length)); + + return msg_new (MSG_ORIGINATE_REQUEST, omsg, seqnum, omsglen); +} + +struct msg * +new_msg_delete_request (u_int32_t seqnum, + struct in_addr area_id, u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id) +{ + struct msg_delete_request dmsg; + dmsg.area_id = area_id; + dmsg.lsa_type = lsa_type; + dmsg.opaque_type = opaque_type; + dmsg.opaque_id = htonl (opaque_id); + memset (&dmsg.pad, 0, sizeof (dmsg.pad)); + + return msg_new (MSG_DELETE_REQUEST, &dmsg, seqnum, + sizeof (struct msg_delete_request)); +} + + +struct msg * +new_msg_reply (u_int32_t seqnr, u_char rc) +{ + struct msg *msg; + struct msg_reply rmsg; + + /* Set return code */ + rmsg.errcode = rc; + memset (&rmsg.pad, 0, sizeof (rmsg.pad)); + + msg = msg_new (MSG_REPLY, &rmsg, seqnr, sizeof (struct msg_reply)); + + return msg; +} + +struct msg * +new_msg_ready_notify (u_int32_t seqnr, u_char lsa_type, + u_char opaque_type, struct in_addr addr) +{ + struct msg_ready_notify rmsg; + + rmsg.lsa_type = lsa_type; + rmsg.opaque_type = opaque_type; + memset (&rmsg.pad, 0, sizeof (rmsg.pad)); + rmsg.addr = addr; + + return msg_new (MSG_READY_NOTIFY, &rmsg, seqnr, + sizeof (struct msg_ready_notify)); +} + +struct msg * +new_msg_new_if (u_int32_t seqnr, + struct in_addr ifaddr, struct in_addr area_id) +{ + struct msg_new_if nmsg; + + nmsg.ifaddr = ifaddr; + nmsg.area_id = area_id; + + return msg_new (MSG_NEW_IF, &nmsg, seqnr, sizeof (struct msg_new_if)); +} + +struct msg * +new_msg_del_if (u_int32_t seqnr, struct in_addr ifaddr) +{ + struct msg_del_if dmsg; + + dmsg.ifaddr = ifaddr; + + return msg_new (MSG_DEL_IF, &dmsg, seqnr, sizeof (struct msg_del_if)); +} + +struct msg * +new_msg_ism_change (u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr area_id, u_char status) +{ + struct msg_ism_change imsg; + + imsg.ifaddr = ifaddr; + imsg.area_id = area_id; + imsg.status = status; + memset (&imsg.pad, 0, sizeof (imsg.pad)); + + return msg_new (MSG_ISM_CHANGE, &imsg, seqnr, + sizeof (struct msg_ism_change)); +} + +struct msg * +new_msg_nsm_change (u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr nbraddr, + struct in_addr router_id, u_char status) +{ + struct msg_nsm_change nmsg; + + nmsg.ifaddr = ifaddr; + nmsg.nbraddr = nbraddr; + nmsg.router_id = router_id; + nmsg.status = status; + memset (&nmsg.pad, 0, sizeof (nmsg.pad)); + + return msg_new (MSG_NSM_CHANGE, &nmsg, seqnr, + sizeof (struct msg_nsm_change)); +} + +struct msg * +new_msg_lsa_change_notify (u_char msgtype, + u_int32_t seqnum, + struct in_addr ifaddr, + struct in_addr area_id, + u_char is_self_originated, struct lsa_header *data) +{ + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_lsa_change_notify *nmsg; + int len; + + assert (data); + + nmsg = (struct msg_lsa_change_notify *) buf; + len = ntohs (data->length) + sizeof (struct msg_lsa_change_notify) + - sizeof (struct lsa_header); + nmsg->ifaddr = ifaddr; + nmsg->area_id = area_id; + nmsg->is_self_originated = is_self_originated; + memset (&nmsg->pad, 0, sizeof (nmsg->pad)); + memcpy (&nmsg->data, data, ntohs (data->length)); + + return msg_new (msgtype, nmsg, seqnum, len); +} + +#endif /* SUPPORT_OSPF_API */ diff --git a/ospfd/ospf_api.h b/ospfd/ospf_api.h new file mode 100644 index 00000000..e7867614 --- /dev/null +++ b/ospfd/ospf_api.h @@ -0,0 +1,357 @@ +/* + * API message handling module for OSPF daemon and client. + * Copyright (C) 2001, 2002 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +/* This file is used both by the OSPFd and client applications to + define message formats used for communication. */ + +#ifndef _OSPF_API_H +#define _OSPF_API_H + +#define OSPF_API_VERSION 1 + +/* MTYPE definition is not reflected to "memory.h". */ +#define MTYPE_OSPF_API_MSG MTYPE_TMP +#define MTYPE_OSPF_API_FIFO MTYPE_TMP + +/* Default API server port to accept connection request from client-side. */ +/* This value could be overridden by "ospfapi" entry in "/etc/services". */ +#define OSPF_API_SYNC_PORT 2607 + +/* ----------------------------------------------------------- + * Generic messages + * ----------------------------------------------------------- + */ + +/* Message header structure, fields are in network byte order and + aligned to four octets. */ +struct apimsghdr +{ + u_char version; /* OSPF API protocol version */ + u_char msgtype; /* Type of message */ + u_int16_t msglen; /* Length of message w/o header */ + u_int32_t msgseq; /* Sequence number */ +}; + +/* Message representation with header and body */ +struct msg +{ + struct msg *next; /* to link into fifo */ + + /* Message header */ + struct apimsghdr hdr; + + /* Message body */ + struct stream *s; +}; + +/* Prototypes for generic messages. */ +struct msg *msg_new (u_char msgtype, void *msgbody, + u_int32_t seqnum, u_int16_t msglen); +struct msg *msg_dup (struct msg *msg); +void msg_print (struct msg *msg); /* XXX debug only */ +void msg_free (struct msg *msg); +struct msg *msg_read (int fd); +int msg_write (int fd, struct msg *msg); + +/* For requests, the message sequence number is between MIN_SEQ and + MAX_SEQ. For notifications, the sequence number is 0. */ + +#define MIN_SEQ 1 +#define MAX_SEQ 2147483647 + +void msg_set_seq (struct msg *msg, u_int32_t seqnr); +u_int32_t msg_get_seq (struct msg *msg); + +/* ----------------------------------------------------------- + * Message fifo queues + * ----------------------------------------------------------- + */ + +/* Message queue structure. */ +struct msg_fifo +{ + unsigned long count; + + struct msg *head; + struct msg *tail; +}; + +/* Prototype for message fifo queues. */ +struct msg_fifo *msg_fifo_new (); +void msg_fifo_push (struct msg_fifo *, struct msg *msg); +struct msg *msg_fifo_pop (struct msg_fifo *fifo); +struct msg *msg_fifo_head (struct msg_fifo *fifo); +void msg_fifo_flush (struct msg_fifo *fifo); +void msg_fifo_free (struct msg_fifo *fifo); + +/* ----------------------------------------------------------- + * Specific message type and format definitions + * ----------------------------------------------------------- + */ + +/* Messages to OSPF daemon. */ +#define MSG_REGISTER_OPAQUETYPE 1 +#define MSG_UNREGISTER_OPAQUETYPE 2 +#define MSG_REGISTER_EVENT 3 +#define MSG_SYNC_LSDB 4 +#define MSG_ORIGINATE_REQUEST 5 +#define MSG_DELETE_REQUEST 6 + +/* Messages from OSPF daemon. */ +#define MSG_REPLY 10 +#define MSG_READY_NOTIFY 11 +#define MSG_LSA_UPDATE_NOTIFY 12 +#define MSG_LSA_DELETE_NOTIFY 13 +#define MSG_NEW_IF 14 +#define MSG_DEL_IF 15 +#define MSG_ISM_CHANGE 16 +#define MSG_NSM_CHANGE 17 + +struct msg_register_opaque_type +{ + u_char lsatype; + u_char opaquetype; + u_char pad[2]; /* padding */ +}; + +struct msg_unregister_opaque_type +{ + u_char lsatype; + u_char opaquetype; + u_char pad[2]; /* padding */ +}; + +/* Power2 is needed to convert LSA types into bit positions, + * see typemask below. Type definition starts at 1, so + * Power2[0] is not used. */ + + +#ifdef ORIGINAL_CODING +static const u_int16_t + Power2[] = { 0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, + 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000 +}; +#else +static const u_int16_t + Power2[] = { 0, (1 << 0), (1 << 1), (1 << 2), (1 << 3), (1 << 4), + (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9), + (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), + (1 << 15) +}; +#endif /* ORIGINAL_CODING */ + +struct lsa_filter_type +{ + u_int16_t typemask; /* bitmask for selecting LSA types (1..16) */ + u_char origin; /* selects according to origin. */ +#define NON_SELF_ORIGINATED 0 +#define SELF_ORIGINATED (OSPF_LSA_SELF) +#define ANY_ORIGIN 2 + + u_char num_areas; /* number of areas in the filter. */ + /* areas, if any, go here. */ +}; + +struct msg_register_event +{ + struct lsa_filter_type filter; +}; + +struct msg_sync_lsdb +{ + struct lsa_filter_type filter; +}; + +struct msg_originate_request +{ + /* Used for LSA type 9 otherwise ignored */ + struct in_addr ifaddr; + + /* Used for LSA type 10 otherwise ignored */ + struct in_addr area_id; + + /* LSA header and LSA-specific part */ + struct lsa_header data; +}; + +struct msg_delete_request +{ + struct in_addr area_id; /* "0.0.0.0" for AS-external opaque LSAs */ + u_char lsa_type; + u_char opaque_type; + u_char pad[2]; /* padding */ + u_int32_t opaque_id; +}; + +struct msg_reply +{ + char errcode; +#define OSPF_API_OK 0 +#define OSPF_API_NOSUCHINTERFACE (-1) +#define OSPF_API_NOSUCHAREA (-2) +#define OSPF_API_NOSUCHLSA (-3) +#define OSPF_API_ILLEGALLSATYPE (-4) +#define OSPF_API_OPAQUETYPEINUSE (-5) +#define OSPF_API_OPAQUETYPENOTREGISTERED (-6) +#define OSPF_API_NOTREADY (-7) +#define OSPF_API_NOMEMORY (-8) +#define OSPF_API_ERROR (-9) +#define OSPF_API_UNDEF (-10) + u_char pad[3]; /* padding to four byte alignment */ +}; + +/* Message to tell client application that it ospf daemon is + * ready to accept opaque LSAs for a given interface or area. */ + +struct msg_ready_notify +{ + u_char lsa_type; + u_char opaque_type; + u_char pad[2]; /* padding */ + struct in_addr addr; /* interface address or area address */ +}; + +/* These messages have a dynamic length depending on the embodied LSA. + They are aligned to four octets. msg_lsa_change_notify is used for + both LSA update and LSAs delete. */ + +struct msg_lsa_change_notify +{ + /* Used for LSA type 9 otherwise ignored */ + struct in_addr ifaddr; + /* Area ID. Not valid for AS-External and Opaque11 LSAs. */ + struct in_addr area_id; + u_char is_self_originated; /* 1 if self originated. */ + u_char pad[3]; + struct lsa_header data; +}; + +struct msg_new_if +{ + struct in_addr ifaddr; /* interface IP address */ + struct in_addr area_id; /* area this interface belongs to */ +}; + +struct msg_del_if +{ + struct in_addr ifaddr; /* interface IP address */ +}; + +struct msg_ism_change +{ + struct in_addr ifaddr; /* interface IP address */ + struct in_addr area_id; /* area this interface belongs to */ + u_char status; /* interface status (up/down) */ + u_char pad[3]; /* not used */ +}; + +struct msg_nsm_change +{ + struct in_addr ifaddr; /* attached interface */ + struct in_addr nbraddr; /* Neighbor interface address */ + struct in_addr router_id; /* Router ID of neighbor */ + u_char status; /* NSM status */ + u_char pad[3]; +}; + +/* We make use of a union to define a structure that covers all + possible API messages. This allows us to find out how much memory + needs to be reserved for the largest API message. */ +struct apimsg +{ + struct apimsghdr hdr; + union + { + struct msg_register_opaque_type register_opaque_type; + struct msg_register_event register_event; + struct msg_sync_lsdb sync_lsdb; + struct msg_originate_request originate_request; + struct msg_delete_request delete_request; + struct msg_reply reply; + struct msg_ready_notify ready_notify; + struct msg_new_if new_if; + struct msg_del_if del_if; + struct msg_ism_change ism_change; + struct msg_nsm_change nsm_change; + struct msg_lsa_change_notify lsa_change_notify; + } + u; +}; + +#define OSPF_API_MAX_MSG_SIZE (sizeof(struct apimsg) + OSPF_MAX_LSA_SIZE) + +/* ----------------------------------------------------------- + * Prototypes for specific messages + * ----------------------------------------------------------- + */ + +/* For debugging only. */ +void api_opaque_lsa_print (struct lsa_header *data); + +/* Messages sent by client */ +struct msg *new_msg_register_opaque_type (u_int32_t seqnum, u_char ltype, + u_char otype); +struct msg *new_msg_register_event (u_int32_t seqnum, + struct lsa_filter_type *filter); +struct msg *new_msg_sync_lsdb (u_int32_t seqnum, + struct lsa_filter_type *filter); +struct msg *new_msg_originate_request (u_int32_t seqnum, + struct in_addr ifaddr, + struct in_addr area_id, + struct lsa_header *data); +struct msg *new_msg_delete_request (u_int32_t seqnum, + struct in_addr area_id, + u_char lsa_type, + u_char opaque_type, u_int32_t opaque_id); + +/* Messages sent by OSPF daemon */ +struct msg *new_msg_reply (u_int32_t seqnum, u_char rc); + +struct msg *new_msg_ready_notify (u_int32_t seqnr, u_char lsa_type, + u_char opaque_type, struct in_addr addr); + +struct msg *new_msg_new_if (u_int32_t seqnr, + struct in_addr ifaddr, struct in_addr area); + +struct msg *new_msg_del_if (u_int32_t seqnr, struct in_addr ifaddr); + +struct msg *new_msg_ism_change (u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr area, u_char status); + +struct msg *new_msg_nsm_change (u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr nbraddr, + struct in_addr router_id, u_char status); + +/* msgtype is MSG_LSA_UPDATE_NOTIFY or MSG_LSA_DELETE_NOTIFY */ +struct msg *new_msg_lsa_change_notify (u_char msgtype, + u_int32_t seqnum, + struct in_addr ifaddr, + struct in_addr area_id, + u_char is_self_originated, + struct lsa_header *data); + +/* string printing functions */ +const char *ospf_api_errname (int errcode); +const char *ospf_api_typename (int msgtype); + +#endif /* _OSPF_API_H */ diff --git a/ospfd/ospf_apiserver.c b/ospfd/ospf_apiserver.c new file mode 100644 index 00000000..94167842 --- /dev/null +++ b/ospfd/ospf_apiserver.c @@ -0,0 +1,2700 @@ +/* + * Server side of OSPF API. + * Copyright (C) 2001, 2002 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <zebra.h> + +#ifdef SUPPORT_OSPF_API +#ifndef HAVE_OPAQUE_LSA +#error "Core Opaque-LSA module must be configured." +#endif /* HAVE_OPAQUE_LSA */ + +#include "linklist.h" +#include "prefix.h" +#include "if.h" +#include "table.h" +#include "memory.h" +#include "command.h" +#include "vty.h" +#include "stream.h" +#include "log.h" +#include "thread.h" +#include "hash.h" +#include "sockunion.h" /* for inet_aton() */ +#include "buffer.h" + +#include <sys/types.h> + +#include "ospfd/ospfd.h" /* for "struct thread_master" */ +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_ism.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_nsm.h" +#include "ospfd/ospf_flood.h" +#include "ospfd/ospf_packet.h" +#include "ospfd/ospf_spf.h" +#include "ospfd/ospf_dump.h" +#include "ospfd/ospf_route.h" +#include "ospfd/ospf_ase.h" +#include "ospfd/ospf_zebra.h" + +#include "ospfd/ospf_api.h" +#include "ospfd/ospf_apiserver.h" + +/* This is an implementation of an API to the OSPF daemon that allows + * external applications to access the OSPF daemon through socket + * connections. The application can use this API to inject its own + * opaque LSAs and flood them to other OSPF daemons. Other OSPF + * daemons then receive these LSAs and inform applications through the + * API by sending a corresponding message. The application can also + * register to receive all LSA types (in addition to opaque types) and + * use this information to reconstruct the OSPF's LSDB. The OSPF + * daemon supports multiple applications concurrently. */ + +/* List of all active connections. */ +list apiserver_list; + +/* ----------------------------------------------------------- + * Functions to lookup interfaces + * ----------------------------------------------------------- + */ + +struct ospf_interface * +ospf_apiserver_if_lookup_by_addr (struct in_addr address) +{ + listnode node; + struct ospf_interface *oi; + struct ospf *ospf; + + ospf = ospf_lookup (); + + for (node = listhead (ospf->oiflist); node; nextnode (node)) + { + if ((oi = getdata (node)) != NULL + && oi->type != OSPF_IFTYPE_VIRTUALLINK) + { + if (IPV4_ADDR_SAME (&address, &oi->address->u.prefix4)) + return oi; + } + } + return NULL; +} + +struct ospf_interface * +ospf_apiserver_if_lookup_by_ifp (struct interface *ifp) +{ + listnode node; + struct ospf_interface *oi; + struct ospf *ospf; + + ospf = ospf_lookup (); + + for (node = listhead (ospf->oiflist); node; nextnode (node)) + { + if ((oi = getdata (node)) && oi->ifp == ifp) + { + return oi; + } + } + return NULL; +} + +/* ----------------------------------------------------------- + * Initialization + * ----------------------------------------------------------- + */ + +unsigned short +ospf_apiserver_getport (void) +{ + struct servent *sp = getservbyname ("ospfapi", "tcp"); + + return sp ? ntohs (sp->s_port) : OSPF_API_SYNC_PORT; +} + +/* Initialize OSPF API module. Invoked from ospf_opaque_init() */ +int +ospf_apiserver_init (void) +{ + int fd; + int rc = -1; + + /* Create new socket for synchronous messages. */ + fd = ospf_apiserver_serv_sock_family (ospf_apiserver_getport (), AF_INET); + + if (fd < 0) + goto out; + + /* Schedule new thread that handles accepted connections. */ + ospf_apiserver_event (OSPF_APISERVER_ACCEPT, fd, NULL); + + /* Initialize list that keeps track of all connections. */ + apiserver_list = list_new (); + + /* Register opaque-independent call back functions. These functions + are invoked on ISM, NSM changes and LSA update and LSA deletes */ + rc = + ospf_register_opaque_functab (0 /* all LSAs */, + 0 /* all opaque types */, + ospf_apiserver_new_if, + ospf_apiserver_del_if, + ospf_apiserver_ism_change, + ospf_apiserver_nsm_change, + NULL, + NULL, + NULL, + NULL, /* ospf_apiserver_show_info */ + NULL, /* originator_func */ + NULL, /* ospf_apiserver_lsa_refresher */ + ospf_apiserver_lsa_update, + ospf_apiserver_lsa_delete); + if (rc != 0) + { + zlog_warn ("ospf_apiserver_init: Failed to register opaque type [0/0]"); + } + + rc = 0; + +out: + return rc; +} + +/* Terminate OSPF API module. */ +void +ospf_apiserver_term (void) +{ + listnode node; + + /* Unregister wildcard [0/0] type */ + ospf_delete_opaque_functab (0 /* all LSAs */, + 0 /* all opaque types */); + + /* Free all client instances */ + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = + (struct ospf_apiserver *) getdata (node); + ospf_apiserver_free (apiserv); + } + + /* Free client list itself */ + list_delete (apiserver_list); + + /* Free wildcard list */ + /* XXX */ +} + +static struct ospf_apiserver * +lookup_apiserver (u_char lsa_type, u_char opaque_type) +{ + listnode n1, n2; + struct registered_opaque_type *r; + struct ospf_apiserver *apiserv, *found = NULL; + + for (n1 = listhead (apiserver_list); n1; nextnode (n1)) + { + apiserv = (struct ospf_apiserver *) getdata (n1); + + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + r = (struct registered_opaque_type *) getdata (n2); + + if (r->lsa_type == lsa_type && r->opaque_type == opaque_type) + { + found = apiserv; + goto out; + } + } + } +out: + return found; +} + +static struct ospf_apiserver * +lookup_apiserver_by_lsa (struct ospf_lsa *lsa) +{ + struct lsa_header *lsah = lsa->data; + struct ospf_apiserver *found = NULL; + + if (IS_OPAQUE_LSA (lsah->type)) + { + found = lookup_apiserver (lsah->type, + GET_OPAQUE_TYPE (ntohl (lsah->id.s_addr))); + } + return found; +} + +/* ----------------------------------------------------------- + * Followings are functions to manage client connections. + * ----------------------------------------------------------- + */ +static int +ospf_apiserver_new_lsa_hook (struct ospf_lsa *lsa) +{ + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: Put LSA(%p)[%s] into reserve, total=%ld", lsa, dump_lsa_key (lsa), lsa->lsdb->total); + return 0; +} + +static int +ospf_apiserver_del_lsa_hook (struct ospf_lsa *lsa) +{ + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: Get LSA(%p)[%s] from reserve, total=%ld", lsa, dump_lsa_key (lsa), lsa->lsdb->total); + return 0; +} + +/* Allocate new connection structure. */ +struct ospf_apiserver * +ospf_apiserver_new (int fd_sync, int fd_async) +{ + struct ospf_apiserver *new = + XMALLOC (MTYPE_OSPF_APISERVER, sizeof (struct ospf_apiserver)); + + new->filter = + XMALLOC (MTYPE_OSPF_APISERVER_MSGFILTER, sizeof (struct lsa_filter_type)); + + new->fd_sync = fd_sync; + new->fd_async = fd_async; + + /* list of registered opaque types that application uses */ + new->opaque_types = list_new (); + + /* Initialize temporary strage for LSA instances to be refreshed. */ + memset (&new->reserve, 0, sizeof (struct ospf_lsdb)); + ospf_lsdb_init (&new->reserve); + + new->reserve.new_lsa_hook = ospf_apiserver_new_lsa_hook; /* debug */ + new->reserve.del_lsa_hook = ospf_apiserver_del_lsa_hook; /* debug */ + + new->out_sync_fifo = msg_fifo_new (); + new->out_async_fifo = msg_fifo_new (); + new->t_sync_read = NULL; +#ifdef USE_ASYNC_READ + new->t_async_read = NULL; +#endif /* USE_ASYNC_READ */ + new->t_sync_write = NULL; + new->t_async_write = NULL; + + new->filter->typemask = 0; /* filter all LSAs */ + new->filter->origin = ANY_ORIGIN; + new->filter->num_areas = 0; + + return new; +} + +void +ospf_apiserver_event (enum event event, int fd, + struct ospf_apiserver *apiserv) +{ + struct thread *apiserver_serv_thread; + + switch (event) + { + case OSPF_APISERVER_ACCEPT: + apiserver_serv_thread = + thread_add_read (master, ospf_apiserver_accept, apiserv, fd); + break; + case OSPF_APISERVER_SYNC_READ: + apiserv->t_sync_read = + thread_add_read (master, ospf_apiserver_read, apiserv, fd); + break; +#ifdef USE_ASYNC_READ + case OSPF_APISERVER_ASYNC_READ: + apiserv->t_async_read = + thread_add_read (master, ospf_apiserver_read, apiserv, fd); + break; +#endif /* USE_ASYNC_READ */ + case OSPF_APISERVER_SYNC_WRITE: + if (!apiserv->t_sync_write) + { + apiserv->t_sync_write = + thread_add_write (master, ospf_apiserver_sync_write, apiserv, fd); + } + break; + case OSPF_APISERVER_ASYNC_WRITE: + if (!apiserv->t_async_write) + { + apiserv->t_async_write = + thread_add_write (master, ospf_apiserver_async_write, apiserv, fd); + } + break; + } +} + +/* Free instance. First unregister all opaque types used by + application, flush opaque LSAs injected by application + from network and close connection. */ +void +ospf_apiserver_free (struct ospf_apiserver *apiserv) +{ + listnode node; + + /* Cancel read and write threads. */ + if (apiserv->t_sync_read) + { + thread_cancel (apiserv->t_sync_read); + } +#ifdef USE_ASYNC_READ + if (apiserv->t_async_read) + { + thread_cancel (apiserv->t_async_read); + } +#endif /* USE_ASYNC_READ */ + if (apiserv->t_sync_write) + { + thread_cancel (apiserv->t_sync_write); + } + + if (apiserv->t_async_write) + { + thread_cancel (apiserv->t_async_write); + } + + /* Unregister all opaque types that application registered + and flush opaque LSAs if still in LSDB. */ + + while ((node = listhead (apiserv->opaque_types)) != NULL) + { + + struct registered_opaque_type *regtype = node->data; + + ospf_apiserver_unregister_opaque_type (apiserv, regtype->lsa_type, + regtype->opaque_type); + + } + + /* Close connections to OSPFd. */ + if (apiserv->fd_sync > 0) + { + close (apiserv->fd_sync); + } + + if (apiserv->fd_async > 0) + { + close (apiserv->fd_async); + } + + /* Free fifos */ + msg_fifo_free (apiserv->out_sync_fifo); + msg_fifo_free (apiserv->out_async_fifo); + + /* Clear temporary strage for LSA instances to be refreshed. */ + ospf_lsdb_delete_all (&apiserv->reserve); + ospf_lsdb_cleanup (&apiserv->reserve); + + /* Remove from the list of active clients. */ + listnode_delete (apiserver_list, apiserv); + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: Delete apiserv(%p), total#(%d)", apiserv, apiserver_list->count); + + /* And free instance. */ + XFREE (MTYPE_OSPF_APISERVER, apiserv); +} + +int +ospf_apiserver_read (struct thread *thread) +{ + struct ospf_apiserver *apiserv; + struct msg *msg; + int fd; + int rc = -1; + enum event event; + + apiserv = THREAD_ARG (thread); + fd = THREAD_FD (thread); + + if (fd == apiserv->fd_sync) + { + event = OSPF_APISERVER_SYNC_READ; + apiserv->t_sync_read = NULL; + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: ospf_apiserver_read: Peer: %s/%u", + inet_ntoa (apiserv->peer_sync.sin_addr), + ntohs (apiserv->peer_sync.sin_port)); + } +#ifdef USE_ASYNC_READ + else if (fd == apiserv->fd_async) + { + event = OSPF_APISERVER_ASYNC_READ; + apiserv->t_async_read = NULL; + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: ospf_apiserver_read: Peer: %s/%u", + inet_ntoa (apiserv->peer_async.sin_addr), + ntohs (apiserv->peer_async.sin_port)); + } +#endif /* USE_ASYNC_READ */ + else + { + zlog_warn ("ospf_apiserver_read: Unknown fd(%d)", fd); + ospf_apiserver_free (apiserv); + goto out; + } + + /* Read message from fd. */ + msg = msg_read (fd); + if (msg == NULL) + { + zlog_warn + ("ospf_apiserver_read: read failed on fd=%d, closing connection", fd); + + /* Perform cleanup. */ + ospf_apiserver_free (apiserv); + goto out; + } + + if (IS_DEBUG_OSPF_EVENT) + msg_print (msg); + + /* Dispatch to corresponding message handler. */ + rc = ospf_apiserver_handle_msg (apiserv, msg); + + /* Prepare for next message, add read thread. */ + ospf_apiserver_event (event, fd, apiserv); + + msg_free (msg); + +out: + return rc; +} + +int +ospf_apiserver_sync_write (struct thread *thread) +{ + struct ospf_apiserver *apiserv; + struct msg *msg; + int fd; + int rc = -1; + + apiserv = THREAD_ARG (thread); + assert (apiserv); + fd = THREAD_FD (thread); + + apiserv->t_sync_write = NULL; + + /* Sanity check */ + if (fd != apiserv->fd_sync) + { + zlog_warn ("ospf_apiserver_sync_write: Unknown fd=%d", fd); + goto out; + } + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: ospf_apiserver_sync_write: Peer: %s/%u", + inet_ntoa (apiserv->peer_sync.sin_addr), + ntohs (apiserv->peer_sync.sin_port)); + + /* Check whether there is really a message in the fifo. */ + msg = msg_fifo_pop (apiserv->out_sync_fifo); + if (!msg) + { + zlog_warn ("API: ospf_apiserver_sync_write: No message in Sync-FIFO?"); + return 0; + } + + if (IS_DEBUG_OSPF_EVENT) + msg_print (msg); + + rc = msg_write (fd, msg); + + /* Once a message is dequeued, it should be freed anyway. */ + msg_free (msg); + + if (rc < 0) + { + zlog_warn + ("ospf_apiserver_sync_write: write failed on fd=%d", fd); + goto out; + } + + + /* If more messages are in sync message fifo, schedule write thread. */ + if (msg_fifo_head (apiserv->out_sync_fifo)) + { + ospf_apiserver_event (OSPF_APISERVER_SYNC_WRITE, apiserv->fd_sync, + apiserv); + } + + out: + + if (rc < 0) + { + /* Perform cleanup and disconnect with peer */ + ospf_apiserver_free (apiserv); + } + + return rc; +} + + +int +ospf_apiserver_async_write (struct thread *thread) +{ + struct ospf_apiserver *apiserv; + struct msg *msg; + int fd; + int rc = -1; + + apiserv = THREAD_ARG (thread); + assert (apiserv); + fd = THREAD_FD (thread); + + apiserv->t_async_write = NULL; + + /* Sanity check */ + if (fd != apiserv->fd_async) + { + zlog_warn ("ospf_apiserver_async_write: Unknown fd=%d", fd); + goto out; + } + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: ospf_apiserver_async_write: Peer: %s/%u", + inet_ntoa (apiserv->peer_async.sin_addr), + ntohs (apiserv->peer_async.sin_port)); + + /* Check whether there is really a message in the fifo. */ + msg = msg_fifo_pop (apiserv->out_async_fifo); + if (!msg) + { + zlog_warn ("API: ospf_apiserver_async_write: No message in Async-FIFO?"); + return 0; + } + + if (IS_DEBUG_OSPF_EVENT) + msg_print (msg); + + rc = msg_write (fd, msg); + + /* Once a message is dequeued, it should be freed anyway. */ + msg_free (msg); + + if (rc < 0) + { + zlog_warn + ("ospf_apiserver_async_write: write failed on fd=%d", fd); + goto out; + } + + + /* If more messages are in async message fifo, schedule write thread. */ + if (msg_fifo_head (apiserv->out_async_fifo)) + { + ospf_apiserver_event (OSPF_APISERVER_ASYNC_WRITE, apiserv->fd_async, + apiserv); + } + + out: + + if (rc < 0) + { + /* Perform cleanup and disconnect with peer */ + ospf_apiserver_free (apiserv); + } + + return rc; +} + + +int +ospf_apiserver_serv_sock_family (unsigned short port, int family) +{ + union sockunion su; + int accept_sock; + int rc; + + memset (&su, 0, sizeof (union sockunion)); + su.sa.sa_family = family; + + /* Make new socket */ + accept_sock = sockunion_stream_socket (&su); + if (accept_sock < 0) + return accept_sock; + + /* This is a server, so reuse address and port */ + sockopt_reuseaddr (accept_sock); + sockopt_reuseport (accept_sock); + + /* Bind socket to address and given port. */ + rc = sockunion_bind (accept_sock, &su, port, NULL); + if (rc < 0) + { + close (accept_sock); /* Close socket */ + return rc; + } + + /* Listen socket under queue length 3. */ + rc = listen (accept_sock, 3); + if (rc < 0) + { + zlog_warn ("ospf_apiserver_serv_sock_family: listen: %s", + strerror (errno)); + close (accept_sock); /* Close socket */ + return rc; + } + return accept_sock; +} + + +/* Accept connection request from external applications. For each + accepted connection allocate own connection instance. */ +int +ospf_apiserver_accept (struct thread *thread) +{ + int accept_sock; + int new_sync_sock; + int new_async_sock; + union sockunion su; + struct ospf_apiserver *apiserv; + struct sockaddr_in peer_async; + struct sockaddr_in peer_sync; + int peerlen; + int ret; + + /* THREAD_ARG (thread) is NULL */ + accept_sock = THREAD_FD (thread); + + /* Keep hearing on socket for further connections. */ + ospf_apiserver_event (OSPF_APISERVER_ACCEPT, accept_sock, NULL); + + memset (&su, 0, sizeof (union sockunion)); + /* Accept connection for synchronous messages */ + new_sync_sock = sockunion_accept (accept_sock, &su); + if (new_sync_sock < 0) + { + zlog_warn ("ospf_apiserver_accept: accept: %s", strerror (errno)); + return -1; + } + + /* Get port address and port number of peer to make reverse connection. + The reverse channel uses the port number of the peer port+1. */ + + memset(&peer_sync, 0, sizeof(struct sockaddr_in)); + peerlen = sizeof (struct sockaddr_in); + + ret = getpeername (new_sync_sock, (struct sockaddr *)&peer_sync, &peerlen); + if (ret < 0) + { + zlog_warn ("ospf_apiserver_accept: getpeername: %s", strerror (errno)); + close (new_sync_sock); + return -1; + } + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: ospf_apiserver_accept: New peer: %s/%u", + inet_ntoa (peer_sync.sin_addr), ntohs (peer_sync.sin_port)); + + /* Create new socket for asynchronous messages. */ + peer_async = peer_sync; + peer_async.sin_port = htons(ntohs(peer_sync.sin_port) + 1); + + /* Check if remote port number to make reverse connection is valid one. */ + if (ntohs (peer_async.sin_port) == ospf_apiserver_getport ()) + { + zlog_warn ("API: ospf_apiserver_accept: Peer(%s/%u): Invalid async port number?", + inet_ntoa (peer_async.sin_addr), ntohs (peer_async.sin_port)); + close (new_sync_sock); + return -1; + } + + new_async_sock = socket (AF_INET, SOCK_STREAM, 0); + if (new_async_sock < 0) + { + zlog_warn ("ospf_apiserver_accept: socket: %s", strerror (errno)); + close (new_sync_sock); + return -1; + } + + ret = connect (new_async_sock, (struct sockaddr *) &peer_async, + sizeof (struct sockaddr_in)); + + if (ret < 0) + { + zlog_warn ("ospf_apiserver_accept: connect: %s", strerror (errno)); + close (new_sync_sock); + close (new_async_sock); + return -1; + } + +#ifdef USE_ASYNC_READ +#else /* USE_ASYNC_READ */ + /* Make the asynchronous channel write-only. */ + ret = shutdown (new_async_sock, SHUT_RD); + if (ret < 0) + { + zlog_warn ("ospf_apiserver_accept: shutdown: %s", strerror (errno)); + close (new_sync_sock); + close (new_async_sock); + return -1; + } +#endif /* USE_ASYNC_READ */ + + /* Allocate new server-side connection structure */ + apiserv = ospf_apiserver_new (new_sync_sock, new_async_sock); + + /* Add to active connection list */ + listnode_add (apiserver_list, apiserv); + apiserv->peer_sync = peer_sync; + apiserv->peer_async = peer_async; + + /* And add read threads for new connection */ + ospf_apiserver_event (OSPF_APISERVER_SYNC_READ, new_sync_sock, apiserv); +#ifdef USE_ASYNC_READ + ospf_apiserver_event (OSPF_APISERVER_ASYNC_READ, new_async_sock, apiserv); +#endif /* USE_ASYNC_READ */ + + if (IS_DEBUG_OSPF_EVENT) + zlog_warn ("API: New apiserv(%p), total#(%d)", apiserv, apiserver_list->count); + + return 0; +} + + +/* ----------------------------------------------------------- + * Send reply with return code to client application + * ----------------------------------------------------------- + */ + +int +ospf_apiserver_send_msg (struct ospf_apiserver *apiserv, struct msg *msg) +{ + struct msg_fifo *fifo; + struct msg *msg2; + enum event event; + int fd; + + switch (msg->hdr.msgtype) + { + case MSG_REPLY: + fifo = apiserv->out_sync_fifo; + fd = apiserv->fd_sync; + event = OSPF_APISERVER_SYNC_WRITE; + break; + case MSG_READY_NOTIFY: + case MSG_LSA_UPDATE_NOTIFY: + case MSG_LSA_DELETE_NOTIFY: + case MSG_NEW_IF: + case MSG_DEL_IF: + case MSG_ISM_CHANGE: + case MSG_NSM_CHANGE: + fifo = apiserv->out_async_fifo; + fd = apiserv->fd_async; + event = OSPF_APISERVER_ASYNC_WRITE; + break; + default: + zlog_warn ("ospf_apiserver_send_msg: Unknown message type %d", + msg->hdr.msgtype); + return -1; + } + + /* Make a copy of the message and put in the fifo. Once the fifo + gets drained by the write thread, the message will be freed. */ + /* NB: Given "msg" is untouched in this function. */ + msg2 = msg_dup (msg); + + /* Enqueue message into corresponding fifo queue */ + msg_fifo_push (fifo, msg2); + + /* Schedule write thread */ + ospf_apiserver_event (event, fd, apiserv); + return 0; +} + +int +ospf_apiserver_send_reply (struct ospf_apiserver *apiserv, u_int32_t seqnr, + u_char rc) +{ + struct msg *msg = new_msg_reply (seqnr, rc); + int ret; + + if (!msg) + { + zlog_warn ("ospf_apiserver_send_reply: msg_new failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + return -1; + } + + ret = ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + return ret; +} + + +/* ----------------------------------------------------------- + * Generic message dispatching handler function + * ----------------------------------------------------------- + */ + +int +ospf_apiserver_handle_msg (struct ospf_apiserver *apiserv, struct msg *msg) +{ + int rc; + + /* Call corresponding message handler function. */ + switch (msg->hdr.msgtype) + { + case MSG_REGISTER_OPAQUETYPE: + rc = ospf_apiserver_handle_register_opaque_type (apiserv, msg); + break; + case MSG_UNREGISTER_OPAQUETYPE: + rc = ospf_apiserver_handle_unregister_opaque_type (apiserv, msg); + break; + case MSG_REGISTER_EVENT: + rc = ospf_apiserver_handle_register_event (apiserv, msg); + break; + case MSG_SYNC_LSDB: + rc = ospf_apiserver_handle_sync_lsdb (apiserv, msg); + break; + case MSG_ORIGINATE_REQUEST: + rc = ospf_apiserver_handle_originate_request (apiserv, msg); + break; + case MSG_DELETE_REQUEST: + rc = ospf_apiserver_handle_delete_request (apiserv, msg); + break; + default: + zlog_warn ("ospf_apiserver_handle_msg: Unknown message type: %d", + msg->hdr.msgtype); + rc = -1; + } + return rc; +} + + +/* ----------------------------------------------------------- + * Following are functions for opaque type registration + * ----------------------------------------------------------- + */ + +int +ospf_apiserver_register_opaque_type (struct ospf_apiserver *apiserv, + u_char lsa_type, u_char opaque_type) +{ + struct registered_opaque_type *regtype; + int (*originator_func) (void *arg); + int rc; + + switch (lsa_type) + { + case OSPF_OPAQUE_LINK_LSA: + originator_func = ospf_apiserver_lsa9_originator; + break; + case OSPF_OPAQUE_AREA_LSA: + originator_func = ospf_apiserver_lsa10_originator; + break; + case OSPF_OPAQUE_AS_LSA: + originator_func = ospf_apiserver_lsa11_originator; + break; + default: + zlog_warn ("ospf_apiserver_register_opaque_type: lsa_type(%d)", + lsa_type); + return OSPF_API_ILLEGALLSATYPE; + } + + + /* Register opaque function table */ + /* NB: Duplicated registration will be detected inside the function. */ + rc = + ospf_register_opaque_functab (lsa_type, opaque_type, + NULL, /* ospf_apiserver_new_if */ + NULL, /* ospf_apiserver_del_if */ + NULL, /* ospf_apiserver_ism_change */ + NULL, /* ospf_apiserver_nsm_change */ + NULL, + NULL, + NULL, + ospf_apiserver_show_info, + originator_func, + ospf_apiserver_lsa_refresher, + NULL, /* ospf_apiserver_lsa_update */ + NULL /* ospf_apiserver_lsa_delete */); + + if (rc != 0) + { + zlog_warn ("Failed to register opaque type [%d/%d]", + lsa_type, opaque_type); + return OSPF_API_OPAQUETYPEINUSE; + } + + /* Remember the opaque type that application registers so when + connection shuts down, we can flush all LSAs of this opaque + type. */ + + regtype = + XMALLOC (MTYPE_OSPF_APISERVER, sizeof (struct registered_opaque_type)); + memset (regtype, 0, sizeof (struct registered_opaque_type)); + regtype->lsa_type = lsa_type; + regtype->opaque_type = opaque_type; + + /* Add to list of registered opaque types */ + listnode_add (apiserv->opaque_types, regtype); + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: Add LSA-type(%d)/Opaque-type(%d) into apiserv(%p), total#(%d)", lsa_type, opaque_type, apiserv, listcount (apiserv->opaque_types)); + + return 0; +} + +int +ospf_apiserver_unregister_opaque_type (struct ospf_apiserver *apiserv, + u_char lsa_type, u_char opaque_type) +{ + listnode node; + + for (node = listhead (apiserv->opaque_types); node; nextnode (node)) + { + struct registered_opaque_type *regtype = node->data; + + /* Check if we really registered this opaque type */ + if (regtype->lsa_type == lsa_type && + regtype->opaque_type == opaque_type) + { + + /* Yes, we registered this opaque type. Flush + all existing opaque LSAs of this type */ + + ospf_apiserver_flush_opaque_lsa (apiserv, lsa_type, opaque_type); + ospf_delete_opaque_functab (lsa_type, opaque_type); + + /* Remove from list of registered opaque types */ + listnode_delete (apiserv->opaque_types, regtype); + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("API: Del LSA-type(%d)/Opaque-type(%d) from apiserv(%p), total#(%d)", lsa_type, opaque_type, apiserv, listcount (apiserv->opaque_types)); + + return 0; + } + } + + /* Opaque type is not registered */ + zlog_warn ("Failed to unregister opaque type [%d/%d]", + lsa_type, opaque_type); + return OSPF_API_OPAQUETYPENOTREGISTERED; +} + + +int +apiserver_is_opaque_type_registered (struct ospf_apiserver *apiserv, + u_char lsa_type, u_char opaque_type) +{ + listnode node; + + for (node = listhead (apiserv->opaque_types); node; nextnode (node)) + { + struct registered_opaque_type *regtype = node->data; + + /* Check if we really registered this opaque type */ + if (regtype->lsa_type == lsa_type && + regtype->opaque_type == opaque_type) + { + /* Yes registered */ + return 1; + } + } + /* Not registered */ + return 0; +} + +int +ospf_apiserver_handle_register_opaque_type (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + struct msg_register_opaque_type *rmsg; + u_char lsa_type; + u_char opaque_type; + int rc = 0; + + /* Extract parameters from register opaque type message */ + rmsg = (struct msg_register_opaque_type *) STREAM_DATA (msg->s); + + lsa_type = rmsg->lsatype; + opaque_type = rmsg->opaquetype; + + rc = ospf_apiserver_register_opaque_type (apiserv, lsa_type, opaque_type); + + /* Send a reply back to client including return code */ + rc = ospf_apiserver_send_reply (apiserv, ntohl (msg->hdr.msgseq), rc); + if (rc < 0) + goto out; + + /* Now inform application about opaque types that are ready */ + switch (lsa_type) + { + case OSPF_OPAQUE_LINK_LSA: + ospf_apiserver_notify_ready_type9 (apiserv); + break; + case OSPF_OPAQUE_AREA_LSA: + ospf_apiserver_notify_ready_type10 (apiserv); + break; + case OSPF_OPAQUE_AS_LSA: + ospf_apiserver_notify_ready_type11 (apiserv); + break; + } +out: + return rc; +} + + +/* Notify specific client about all opaque types 9 that are ready. */ +void +ospf_apiserver_notify_ready_type9 (struct ospf_apiserver *apiserv) +{ + listnode node; + listnode n2; + struct ospf *ospf; + + ospf = ospf_lookup (); + + for (node = listhead (ospf->oiflist); node; nextnode (node)) + { + struct ospf_interface *oi = (struct ospf_interface *) getdata (node); + + /* Check if this interface is indeed ready for type 9 */ + if (!ospf_apiserver_is_ready_type9 (oi)) + continue; + + /* Check for registered opaque type 9 types */ + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + struct msg *msg; + + if (r->lsa_type == OSPF_OPAQUE_LINK_LSA) + { + + /* Yes, this opaque type is ready */ + msg = new_msg_ready_notify (0, OSPF_OPAQUE_LINK_LSA, + r->opaque_type, + oi->address->u.prefix4); + if (!msg) + { + zlog_warn ("apiserver_notify_ready_type9: msg_new failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + } + +out: + return; +} + + +/* Notify specific client about all opaque types 10 that are ready. */ +void +ospf_apiserver_notify_ready_type10 (struct ospf_apiserver *apiserv) +{ + listnode node; + listnode n2; + struct ospf *ospf; + + ospf = ospf_lookup (); + + for (node = listhead (ospf->areas); node; nextnode (node)) + { + struct ospf_area *area = getdata (node); + + if (!ospf_apiserver_is_ready_type10 (area)) + { + continue; + } + + /* Check for registered opaque type 10 types */ + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + struct msg *msg; + + if (r->lsa_type == OSPF_OPAQUE_AREA_LSA) + { + /* Yes, this opaque type is ready */ + msg = + new_msg_ready_notify (0, OSPF_OPAQUE_AREA_LSA, + r->opaque_type, area->area_id); + if (!msg) + { + zlog_warn ("apiserver_notify_ready_type10: msg_new failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + } + +out: + return; +} + +/* Notify specific client about all opaque types 11 that are ready */ +void +ospf_apiserver_notify_ready_type11 (struct ospf_apiserver *apiserv) +{ + listnode n2; + struct ospf *ospf; + + ospf = ospf_lookup (); + + /* Can type 11 be originated? */ + if (!ospf_apiserver_is_ready_type11 (ospf)) + goto out;; + + /* Check for registered opaque type 11 types */ + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + struct msg *msg; + struct in_addr noarea_id = { 0L }; + + if (r->lsa_type == OSPF_OPAQUE_AS_LSA) + { + /* Yes, this opaque type is ready */ + msg = new_msg_ready_notify (0, OSPF_OPAQUE_AS_LSA, + r->opaque_type, noarea_id); + + if (!msg) + { + zlog_warn ("apiserver_notify_ready_type11: msg_new failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + +out: + return; +} + +int +ospf_apiserver_handle_unregister_opaque_type (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + struct msg_unregister_opaque_type *umsg; + u_char ltype; + u_char otype; + int rc = 0; + + /* Extract parameters from unregister opaque type message */ + umsg = (struct msg_unregister_opaque_type *) STREAM_DATA (msg->s); + + ltype = umsg->lsatype; + otype = umsg->opaquetype; + + rc = ospf_apiserver_unregister_opaque_type (apiserv, ltype, otype); + + /* Send a reply back to client including return code */ + rc = ospf_apiserver_send_reply (apiserv, ntohl (msg->hdr.msgseq), rc); + + return rc; +} + + +/* ----------------------------------------------------------- + * Following are functions for event (filter) registration. + * ----------------------------------------------------------- + */ +int +ospf_apiserver_handle_register_event (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + struct msg_register_event *rmsg; + int rc; + u_int32_t seqnum; + + rmsg = (struct msg_register_event *) STREAM_DATA (msg->s); + + /* Get request sequence number */ + seqnum = msg_get_seq (msg); + + /* Free existing filter in apiserv. */ + XFREE (MTYPE_OSPF_APISERVER_MSGFILTER, apiserv->filter); + /* Alloc new space for filter. */ + + apiserv->filter = XMALLOC (MTYPE_OSPF_APISERVER_MSGFILTER, + ntohs (msg->hdr.msglen)); + if (apiserv->filter) + { + /* copy it over. */ + memcpy (apiserv->filter, &rmsg->filter, ntohs (msg->hdr.msglen)); + rc = OSPF_API_OK; + } + else + { + rc = OSPF_API_NOMEMORY; + } + /* Send a reply back to client with return code */ + rc = ospf_apiserver_send_reply (apiserv, seqnum, rc); + return rc; +} + + +/* ----------------------------------------------------------- + * Followings are functions for LSDB synchronization. + * ----------------------------------------------------------- + */ + +int +apiserver_sync_callback (struct ospf_lsa *lsa, void *p_arg, int int_arg) +{ + struct ospf_apiserver *apiserv; + int seqnum; + struct msg *msg; + struct param_t + { + struct ospf_apiserver *apiserv; + struct lsa_filter_type *filter; + } + *param; + int rc = -1; + + /* Sanity check */ + assert (lsa->data); + assert (p_arg); + + param = (struct param_t *) p_arg; + apiserv = param->apiserv; + seqnum = (u_int32_t) int_arg; + + /* Check origin in filter. */ + if ((param->filter->origin == ANY_ORIGIN) || + (param->filter->origin == (lsa->flags & OSPF_LSA_SELF))) + { + + /* Default area for AS-External and Opaque11 LSAs */ + struct in_addr area_id = { 0L }; + + /* Default interface for non Opaque9 LSAs */ + struct in_addr ifaddr = { 0L }; + + if (lsa->area) + { + area_id = lsa->area->area_id; + } + if (lsa->data->type == OSPF_OPAQUE_LINK_LSA) + { + ifaddr = lsa->oi->address->u.prefix4; + } + + msg = new_msg_lsa_change_notify (MSG_LSA_UPDATE_NOTIFY, + seqnum, + ifaddr, area_id, + lsa->flags & OSPF_LSA_SELF, lsa->data); + if (!msg) + { + zlog_warn ("apiserver_sync_callback: new_msg_update failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ +/* ospf_apiserver_free (apiserv);*//* Do nothing here XXX */ +#endif + goto out; + } + + /* Send LSA */ + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + rc = 0; + +out: + return rc; +} + +int +ospf_apiserver_handle_sync_lsdb (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + listnode node; + u_int32_t seqnum; + int rc = 0; + struct msg_sync_lsdb *smsg; + struct param_t + { + struct ospf_apiserver *apiserv; + struct lsa_filter_type *filter; + } + param; + u_int16_t mask; + struct route_node *rn; + struct ospf_lsa *lsa; + struct ospf *ospf; + + ospf = ospf_lookup (); + + /* Get request sequence number */ + seqnum = msg_get_seq (msg); + /* Set sync msg. */ + smsg = (struct msg_sync_lsdb *) STREAM_DATA (msg->s); + + /* Set parameter struct. */ + param.apiserv = apiserv; + param.filter = &smsg->filter; + + /* Remember mask. */ + mask = ntohs (smsg->filter.typemask); + + /* Iterate over all areas. */ + for (node = listhead (ospf->areas); node; nextnode (node)) + { + struct ospf_area *area = node->data; + int i; + u_int32_t *area_id = NULL; + /* Compare area_id with area_ids in sync request. */ + if ((i = smsg->filter.num_areas) > 0) + { + /* Let area_id point to the list of area IDs, + * which is at the end of smsg->filter. */ + area_id = (u_int32_t *) (&smsg->filter + 1); + while (i) + { + if (*area_id == area->area_id.s_addr) + { + break; + } + i--; + area_id++; + } + } + else + { + i = 1; + } + + /* If area was found, then i>0 here. */ + if (i) + { + /* Check msg type. */ + if (mask & Power2[OSPF_ROUTER_LSA]) + LSDB_LOOP (ROUTER_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + if (mask & Power2[OSPF_NETWORK_LSA]) + LSDB_LOOP (NETWORK_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + if (mask & Power2[OSPF_SUMMARY_LSA]) + LSDB_LOOP (SUMMARY_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + if (mask & Power2[OSPF_ASBR_SUMMARY_LSA]) + LSDB_LOOP (ASBR_SUMMARY_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + if (mask & Power2[OSPF_OPAQUE_LINK_LSA]) + LSDB_LOOP (OPAQUE_LINK_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + if (mask & Power2[OSPF_OPAQUE_AREA_LSA]) + LSDB_LOOP (OPAQUE_AREA_LSDB (area), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + } + } + + /* For AS-external LSAs */ + if (ospf->lsdb) + { + if (mask & Power2[OSPF_AS_EXTERNAL_LSA]) + LSDB_LOOP (EXTERNAL_LSDB (ospf), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + } + + /* For AS-external opaque LSAs */ + if (ospf->lsdb) + { + if (mask & Power2[OSPF_OPAQUE_AS_LSA]) + LSDB_LOOP (OPAQUE_AS_LSDB (ospf), rn, lsa) + apiserver_sync_callback(lsa, (void *) ¶m, seqnum); + } + + /* Send a reply back to client with return code */ + rc = ospf_apiserver_send_reply (apiserv, seqnum, rc); + return rc; +} + + +/* ----------------------------------------------------------- + * Followings are functions to originate or update LSA + * from an application. + * ----------------------------------------------------------- + */ + +/* Create a new internal opaque LSA by taking prototype and filling in + missing fields such as age, sequence number, advertising router, + checksum and so on. The interface parameter is used for type 9 + LSAs, area parameter for type 10. Type 11 LSAs do neither need area + nor interface. */ + +struct ospf_lsa * +ospf_apiserver_opaque_lsa_new (struct ospf_area *area, + struct ospf_interface *oi, + struct lsa_header *protolsa) +{ + struct stream *s; + struct lsa_header *newlsa; + struct ospf_lsa *new = NULL; + u_char options = 0x0; + u_int16_t length; + + struct ospf *ospf; + + ospf = ospf_lookup(); + assert(ospf); + + /* Create a stream for internal opaque LSA */ + if ((s = stream_new (OSPF_MAX_LSA_SIZE)) == NULL) + { + zlog_warn ("ospf_apiserver_opaque_lsa_new: stream_new failed"); + return NULL; + } + + newlsa = (struct lsa_header *) STREAM_DATA (s); + + /* XXX If this is a link-local LSA or an AS-external LSA, how do we + have to set options? */ + + if (area) + { + options = LSA_OPTIONS_GET (area); +#ifdef HAVE_NSSA + options |= LSA_NSSA_GET (area); +#endif /* HAVE_NSSA */ + } + + options |= OSPF_OPTION_O; /* Don't forget to set option bit */ + + if (IS_DEBUG_OSPF (lsa, LSA_GENERATE)) + { + zlog_info ("LSA[Type%d:%s]: Creating an Opaque-LSA instance", + protolsa->type, inet_ntoa (protolsa->id)); + } + + /* Set opaque-LSA header fields. */ + lsa_header_set (s, options, protolsa->type, protolsa->id, + ospf->router_id); + + /* Set opaque-LSA body fields. */ + stream_put (s, ((u_char *) protolsa) + sizeof (struct lsa_header), + ntohs (protolsa->length) - sizeof (struct lsa_header)); + + /* Determine length of LSA. */ + length = stream_get_endp (s); + newlsa->length = htons (length); + + /* Create OSPF LSA. */ + if ((new = ospf_lsa_new ()) == NULL) + { + zlog_warn ("ospf_apiserver_opaque_lsa_new: ospf_lsa_new() ?"); + stream_free (s); + return NULL; + } + + if ((new->data = ospf_lsa_data_new (length)) == NULL) + { + zlog_warn ("ospf_apiserver_opaque_lsa_new: ospf_lsa_data_new() ?"); + ospf_lsa_free (new); + new = NULL; + stream_free (s); + return NULL; + } + + new->area = area; + new->oi = oi; + + SET_FLAG (new->flags, OSPF_LSA_SELF); + memcpy (new->data, newlsa, length); + stream_free (s); + + return new; +} + + +int +ospf_apiserver_is_ready_type9 (struct ospf_interface *oi) +{ + /* Type 9 opaque LSA can be originated if there is at least one + active opaque-capable neighbor attached to the outgoing + interface. */ + + return (ospf_nbr_count_opaque_capable (oi) > 0); +} + +int +ospf_apiserver_is_ready_type10 (struct ospf_area *area) +{ + /* Type 10 opaque LSA can be originated if there is at least one + interface belonging to the area that has an active opaque-capable + neighbor. */ + listnode node; + + for (node = listhead (area->oiflist); node; nextnode (node)) + { + struct ospf_interface *oi = getdata (node); + + /* Is there an active neighbor attached to this interface? */ + if (ospf_apiserver_is_ready_type9 (oi)) + { + return 1; + } + } + /* No active neighbor in area */ + return 0; +} + +int +ospf_apiserver_is_ready_type11 (struct ospf *ospf) +{ + /* Type 11 opaque LSA can be originated if there is at least one interface + that has an active opaque-capable neighbor. */ + listnode node; + + for (node = listhead (ospf->oiflist); node; nextnode (node)) + { + struct ospf_interface *oi = getdata (node); + + /* Is there an active neighbor attached to this interface? */ + if (ospf_apiserver_is_ready_type9 (oi)) + return 1; + } + /* No active neighbor at all */ + return 0; +} + + +int +ospf_apiserver_handle_originate_request (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + struct msg_originate_request *omsg; + struct lsa_header *data; + struct ospf_lsa *new; + struct ospf_lsa *old; + struct ospf_area *area = NULL; + struct ospf_interface *oi = NULL; + struct ospf_lsdb *lsdb = NULL; + struct ospf *ospf; + int lsa_type, opaque_type; + int ready = 0; + int rc = 0; + + ospf = ospf_lookup(); + + /* Extract opaque LSA data from message */ + omsg = (struct msg_originate_request *) STREAM_DATA (msg->s); + data = &omsg->data; + + /* Determine interface for type9 or area for type10 LSAs. */ + switch (data->type) + { + case OSPF_OPAQUE_LINK_LSA: + oi = ospf_apiserver_if_lookup_by_addr (omsg->ifaddr); + if (!oi) + { + zlog_warn ("apiserver_originate: unknown interface %s", + inet_ntoa (omsg->ifaddr)); + rc = OSPF_API_NOSUCHINTERFACE; + goto out; + } + area = oi->area; + lsdb = area->lsdb; + break; + case OSPF_OPAQUE_AREA_LSA: + area = ospf_area_lookup_by_area_id (ospf, omsg->area_id); + if (!area) + { + zlog_warn ("apiserver_originate: unknown area %s", + inet_ntoa (omsg->area_id)); + rc = OSPF_API_NOSUCHAREA; + goto out; + } + lsdb = area->lsdb; + break; + case OSPF_OPAQUE_AS_LSA: + lsdb = ospf->lsdb; + break; + default: + /* We can only handle opaque types here */ + zlog_warn ("apiserver_originate: Cannot originate non-opaque LSA type %d", + data->type); + rc = OSPF_API_ILLEGALLSATYPE; + goto out; + } + + /* Check if we registered this opaque type */ + lsa_type = data->type; + opaque_type = GET_OPAQUE_TYPE (ntohl (data->id.s_addr)); + + if (!apiserver_is_opaque_type_registered (apiserv, lsa_type, opaque_type)) + { + zlog_warn ("apiserver_originate: LSA-type(%d)/Opaque-type(%d): Not registered", lsa_type, opaque_type); + rc = OSPF_API_OPAQUETYPENOTREGISTERED; + goto out; + } + + /* Make sure that the neighbors are ready before we can originate */ + switch (data->type) + { + case OSPF_OPAQUE_LINK_LSA: + ready = ospf_apiserver_is_ready_type9 (oi); + break; + case OSPF_OPAQUE_AREA_LSA: + ready = ospf_apiserver_is_ready_type10 (area); + break; + case OSPF_OPAQUE_AS_LSA: + ready = ospf_apiserver_is_ready_type11 (ospf); + break; + default: + break; + } + + if (!ready) + { + zlog_warn ("Neighbors not ready to originate type %d", data->type); + rc = OSPF_API_NOTREADY; + goto out; + } + + /* Create OSPF's internal opaque LSA representation */ + new = ospf_apiserver_opaque_lsa_new (area, oi, data); + if (!new) + { + rc = OSPF_API_NOMEMORY; /* XXX */ + goto out; + } + + /* Determine if LSA is new or an update for an existing one. */ + old = ospf_lsdb_lookup (lsdb, new); + + if (!old) + { + /* New LSA install in LSDB. */ + rc = ospf_apiserver_originate1 (new); + } + else + { + /* + * Keep the new LSA instance in the "waiting place" until the next + * refresh timing. If several LSA update requests for the same LSID + * have issued by peer, the last one takes effect. + */ + new->lsdb = &apiserv->reserve; + ospf_lsdb_add (&apiserv->reserve, new); + + /* Kick the scheduler function. */ + ospf_opaque_lsa_refresh_schedule (old); + } + +out: + + /* Send a reply back to client with return code */ + rc = ospf_apiserver_send_reply (apiserv, ntohl (msg->hdr.msgseq), rc); + return rc; +} + + +/* ----------------------------------------------------------- + * Flood an LSA within its flooding scope. + * ----------------------------------------------------------- + */ + +/* XXX We can probably use ospf_flood_through instead of this function + but then we need the neighbor parameter. If we set nbr to + NULL then ospf_flood_through crashes due to dereferencing NULL. */ + +void +ospf_apiserver_flood_opaque_lsa (struct ospf_lsa *lsa) +{ + assert (lsa); + + switch (lsa->data->type) + { + case OSPF_OPAQUE_LINK_LSA: + /* Increment counters? XXX */ + + /* Flood LSA through local network. */ + ospf_flood_through_area (lsa->area, NULL /*nbr */ , lsa); + break; + case OSPF_OPAQUE_AREA_LSA: + /* Update LSA origination count. */ + assert (lsa->area); + lsa->area->ospf->lsa_originate_count++; + + /* Flood LSA through area. */ + ospf_flood_through_area (lsa->area, NULL /*nbr */ , lsa); + break; + case OSPF_OPAQUE_AS_LSA: + { + struct ospf *ospf; + + ospf = ospf_lookup(); + assert(ospf); + + /* Increment counters? XXX */ + + /* Flood LSA through AS. */ + ospf_flood_through_as (ospf, NULL /*nbr */ , lsa); + break; + } + } +} + +int +ospf_apiserver_originate1 (struct ospf_lsa *lsa) +{ + struct ospf *ospf; + + ospf = ospf_lookup(); + assert(ospf); + + /* Install this LSA into LSDB. */ + if (ospf_lsa_install (ospf, lsa->oi, lsa) == NULL) + { + zlog_warn ("ospf_apiserver_originate1: ospf_lsa_install failed"); + return -1; + } + + /* Flood LSA within scope */ + +#ifdef NOTYET + /* + * NB: Modified version of "ospf_flood_though ()" accepts NULL "inbr" + * parameter, and thus it does not cause SIGSEGV error. + */ + ospf_flood_through (NULL /*nbr */ , lsa); +#else /* NOTYET */ + + ospf_apiserver_flood_opaque_lsa (lsa); +#endif /* NOTYET */ + + return 0; +} + + +/* Opaque LSAs of type 9 on a specific interface can now be + originated. Tell clients that registered type 9. */ +int +ospf_apiserver_lsa9_originator (void *arg) +{ + struct ospf_interface *oi; + + oi = (struct ospf_interface *) arg; + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_ready_type9 (oi); + } + return 0; +} + +int +ospf_apiserver_lsa10_originator (void *arg) +{ + struct ospf_area *area; + + area = (struct ospf_area *) arg; + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_ready_type10 (area); + } + return 0; +} + +int +ospf_apiserver_lsa11_originator (void *arg) +{ + struct ospf *ospf; + + ospf = (struct ospf *) arg; + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_ready_type11 (ospf); + } + return 0; +} + + +/* Periodically refresh opaque LSAs so that they do not expire in + other routers. */ +void +ospf_apiserver_lsa_refresher (struct ospf_lsa *lsa) +{ + struct ospf_apiserver *apiserv; + struct ospf_lsa *new = NULL; + struct ospf * ospf; + + ospf = ospf_lookup(); + assert(ospf); + + apiserv = lookup_apiserver_by_lsa (lsa); + if (!apiserv) + { + zlog_warn ("ospf_apiserver_lsa_refresher: LSA[%s]: No apiserver?", dump_lsa_key (lsa)); + lsa->data->ls_age = htons (OSPF_LSA_MAXAGE); /* Flush it anyway. */ + } + + if (IS_LSA_MAXAGE (lsa)) + { + ospf_opaque_lsa_flush_schedule (lsa); + goto out; + } + + /* Check if updated version of LSA instance has already prepared. */ + new = ospf_lsdb_lookup (&apiserv->reserve, lsa); + if (!new) + { + /* This is a periodic refresh, driven by core OSPF mechanism. */ + new = ospf_apiserver_opaque_lsa_new (lsa->area, lsa->oi, lsa->data); + if (!new) + { + zlog_warn ("ospf_apiserver_lsa_refresher: Cannot create a new LSA?"); + goto out; + } + } + else + { + /* This is a forcible refresh, requested by OSPF-API client. */ + ospf_lsdb_delete (&apiserv->reserve, new); + new->lsdb = NULL; + } + + /* Increment sequence number */ + new->data->ls_seqnum = lsa_seqnum_increment (lsa); + + /* New LSA is in same area. */ + new->area = lsa->area; + SET_FLAG (new->flags, OSPF_LSA_SELF); + + /* Install LSA into LSDB. */ + if (ospf_lsa_install (ospf, new->oi, new) == NULL) + { + zlog_warn ("ospf_apiserver_lsa_refresher: ospf_lsa_install failed"); + ospf_lsa_free (new); + goto out; + } + + /* Flood updated LSA through interface, area or AS */ + +#ifdef NOTYET + ospf_flood_through (NULL /*nbr */ , new); +#endif /* NOTYET */ + ospf_apiserver_flood_opaque_lsa (new); + + /* Debug logging. */ + if (IS_DEBUG_OSPF (lsa, LSA_GENERATE)) + { + zlog_info ("LSA[Type%d:%s]: Refresh Opaque LSA", + new->data->type, inet_ntoa (new->data->id)); + ospf_lsa_header_dump (new->data); + } + +out: + return; +} + + +/* ----------------------------------------------------------- + * Followings are functions to delete LSAs + * ----------------------------------------------------------- + */ + +int +ospf_apiserver_handle_delete_request (struct ospf_apiserver *apiserv, + struct msg *msg) +{ + struct msg_delete_request *dmsg; + struct ospf_lsa *old; + struct ospf_area *area = NULL; + struct in_addr id; + int lsa_type, opaque_type; + int rc = 0; + struct ospf * ospf; + + ospf = ospf_lookup(); + assert(ospf); + + /* Extract opaque LSA from message */ + dmsg = (struct msg_delete_request *) STREAM_DATA (msg->s); + + /* Lookup area for link-local and area-local opaque LSAs */ + switch (dmsg->lsa_type) + { + case OSPF_OPAQUE_LINK_LSA: + case OSPF_OPAQUE_AREA_LSA: + area = ospf_area_lookup_by_area_id (ospf, dmsg->area_id); + if (!area) + { + zlog_warn ("ospf_apiserver_lsa_delete: unknown area %s", + inet_ntoa (dmsg->area_id)); + rc = OSPF_API_NOSUCHAREA; + goto out; + } + break; + case OSPF_OPAQUE_AS_LSA: + /* AS-external opaque LSAs have no designated area */ + area = NULL; + break; + default: + zlog_warn + ("ospf_apiserver_lsa_delete: Cannot delete non-opaque LSA type %d", + dmsg->lsa_type); + rc = OSPF_API_ILLEGALLSATYPE; + goto out; + } + + /* Check if we registered this opaque type */ + lsa_type = dmsg->lsa_type; + opaque_type = dmsg->opaque_type; + + if (!apiserver_is_opaque_type_registered (apiserv, lsa_type, opaque_type)) + { + zlog_warn ("ospf_apiserver_lsa_delete: LSA-type(%d)/Opaque-type(%d): Not registered", lsa_type, opaque_type); + rc = OSPF_API_OPAQUETYPENOTREGISTERED; + goto out; + } + + /* opaque_id is in network byte order */ + id.s_addr = htonl (SET_OPAQUE_LSID (dmsg->opaque_type, + ntohl (dmsg->opaque_id))); + + /* + * Even if the target LSA has once scheduled to flush, it remains in + * the LSDB until it is finally handled by the maxage remover thread. + * Therefore, the lookup function below may return non-NULL result. + */ + old = ospf_lsa_lookup (area, dmsg->lsa_type, id, ospf->router_id); + if (!old) + { + zlog_warn ("ospf_apiserver_lsa_delete: LSA[Type%d:%s] not in LSDB", + dmsg->lsa_type, inet_ntoa (id)); + rc = OSPF_API_NOSUCHLSA; + goto out; + } + + /* Schedule flushing of LSA from LSDB */ + /* NB: Multiple scheduling will produce a warning message, but harmless. */ + ospf_opaque_lsa_flush_schedule (old); + +out: + + /* Send reply back to client including return code */ + rc = ospf_apiserver_send_reply (apiserv, ntohl (msg->hdr.msgseq), rc); + return rc; +} + +/* Flush self-originated opaque LSA */ +int +apiserver_flush_opaque_type_callback (struct ospf_lsa *lsa, + void *p_arg, int int_arg) +{ + struct param_t + { + struct ospf_apiserver *apiserv; + u_char lsa_type; + u_char opaque_type; + } + *param; + + /* Sanity check */ + assert (lsa->data); + assert (p_arg); + param = (struct param_t *) p_arg; + + /* If LSA matches type and opaque type then delete it */ + if (IS_LSA_SELF (lsa) && lsa->data->type == param->lsa_type + && GET_OPAQUE_TYPE (ntohl (lsa->data->id.s_addr)) == param->opaque_type) + { + ospf_opaque_lsa_flush_schedule (lsa); + } + return 0; +} + +/* Delete self-originated opaque LSAs of a given opaque type. This + function is called when an application unregisters a given opaque + type or a connection to an application closes and all those opaque + LSAs need to be flushed the LSDB. */ +void +ospf_apiserver_flush_opaque_lsa (struct ospf_apiserver *apiserv, + u_char lsa_type, u_char opaque_type) +{ + struct param_t + { + struct ospf_apiserver *apiserv; + u_char lsa_type; + u_char opaque_type; + } + param; + listnode node; + struct ospf * ospf; + + ospf = ospf_lookup(); + assert(ospf); + + /* Set parameter struct. */ + param.apiserv = apiserv; + param.lsa_type = lsa_type; + param.opaque_type = opaque_type; + +#ifdef ORIGINAL_CODING + /* Iterate over all areas */ + for (node = listhead (ospf_top->areas); node; nextnode (node)) + { + struct ospf_area *area = node->data; + + foreach_lsa (OPAQUE_LINK_LSDB (area), (void *) ¶m, 0, + apiserver_flush_opaque_type_callback); + foreach_lsa (OPAQUE_AREA_LSDB (area), (void *) ¶m, 0, + apiserver_flush_opaque_type_callback); + } + + /* For AS-external opaque LSAs */ + if (ospf->lsdb) + { + foreach_lsa (OPAQUE_AS_LSDB (ospf_top), (void *) ¶m, 0, + apiserver_flush_opaque_type_callback); + } +#else /* ORIGINAL_CODING */ + switch (lsa_type) + { + struct route_node *rn; + struct ospf_lsa *lsa; + + case OSPF_OPAQUE_LINK_LSA: + for (node = listhead (ospf->areas); node; nextnode (node)) + { + struct ospf_area *area = node->data; + LSDB_LOOP (OPAQUE_LINK_LSDB (area), rn, lsa) + apiserver_flush_opaque_type_callback(lsa, (void *) ¶m, 0); + } + break; + case OSPF_OPAQUE_AREA_LSA: + for (node = listhead (ospf->areas); node; nextnode (node)) + { + struct ospf_area *area = node->data; + LSDB_LOOP (OPAQUE_AREA_LSDB (area), rn, lsa) + apiserver_flush_opaque_type_callback(lsa, (void *) ¶m, 0); + } + break; + case OSPF_OPAQUE_AS_LSA: + LSDB_LOOP (OPAQUE_LINK_LSDB (ospf), rn, lsa) + apiserver_flush_opaque_type_callback(lsa, (void *) ¶m, 0); + break; + default: + break; + } + return; +#endif /* ORIGINAL_CODING */ +} + + +/* ----------------------------------------------------------- + * Followings are callback functions to handle opaque types + * ----------------------------------------------------------- + */ + +int +ospf_apiserver_new_if (struct interface *ifp) +{ + struct ospf_interface *oi; + + /* For some strange reason it seems possible that we are invoked + with an interface that has no name. This seems to happen during + initialization. Return if this happens */ + + if (ifp->name[0] == '\0') { + /* interface has empty name */ + zlog_warn ("ospf_apiserver_new_if: interface has no name?"); + return 0; + } + + /* zlog_warn for debugging */ + zlog_warn ("ospf_apiserver_new_if"); + zlog_warn ("ifp name=%s status=%d index=%d", ifp->name, ifp->status, + ifp->ifindex); + + if (ifp->name[0] == '\0') { + /* interface has empty name */ + zlog_warn ("ospf_apiserver_new_if: interface has no name?"); + return 0; + } + + oi = ospf_apiserver_if_lookup_by_ifp (ifp); + + if (!oi) { + /* This interface is known to Zebra but not to OSPF daemon yet. */ + zlog_warn ("ospf_apiserver_new_if: interface %s not known to OSPFd?", + ifp->name); + return 0; + } + + assert (oi); + + /* New interface added to OSPF, tell clients about it */ + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_new_if (oi); + } + return 0; +} + +int +ospf_apiserver_del_if (struct interface *ifp) +{ + struct ospf_interface *oi; + + /* zlog_warn for debugging */ + zlog_warn ("ospf_apiserver_del_if"); + zlog_warn ("ifp name=%s status=%d index=%d\n", ifp->name, ifp->status, + ifp->ifindex); + + oi = ospf_apiserver_if_lookup_by_ifp (ifp); + + if (!oi) { + /* This interface is known to Zebra but not to OSPF daemon + anymore. No need to tell clients about it */ + return 0; + } + + /* Interface deleted, tell clients about it */ + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_del_if (oi); + } + return 0; +} + +void +ospf_apiserver_ism_change (struct ospf_interface *oi, int old_state) +{ + /* Tell clients about interface change */ + + /* zlog_warn for debugging */ + zlog_warn ("ospf_apiserver_ism_change"); + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_ism_change (oi); + } + + zlog_warn ("oi->ifp->name=%s", oi->ifp->name); + zlog_warn ("old_state=%d", old_state); + zlog_warn ("oi->state=%d", oi->state); +} + +void +ospf_apiserver_nsm_change (struct ospf_neighbor *nbr, int old_status) +{ + /* Neighbor status changed, tell clients about it */ + zlog_warn ("ospf_apiserver_nsm_change"); + if (listcount (apiserver_list) > 0) { + ospf_apiserver_clients_notify_nsm_change (nbr); + } +} + +void +ospf_apiserver_show_info (struct vty *vty, struct ospf_lsa *lsa) +{ + struct opaque_lsa + { + struct lsa_header header; + u_char data[1]; /* opaque data have variable length. This is start + address */ + }; + struct opaque_lsa *olsa; + int opaquelen; + + olsa = (struct opaque_lsa *) lsa->data; + + if (VALID_OPAQUE_INFO_LEN (lsa->data)) + { + opaquelen = ntohs (lsa->data->length) - OSPF_LSA_HEADER_SIZE; + } + else + { + opaquelen = 0; + } + + /* Output information about opaque LSAs */ + if (vty != NULL) + { + int i; + vty_out (vty, " Added using OSPF API: %u octets of opaque data %s%s", + opaquelen, + VALID_OPAQUE_INFO_LEN (lsa->data) ? "" : "(Invalid length?)", + VTY_NEWLINE); + vty_out (vty, " Opaque data: "); + + for (i = 0; i < opaquelen; i++) + { + vty_out (vty, "0x%x ", olsa->data[i]); + } + vty_out (vty, "%s", VTY_NEWLINE); + } + else + { + int i; + zlog_info (" Added using OSPF API: %u octets of opaque data %s", + opaquelen, + VALID_OPAQUE_INFO_LEN (lsa-> + data) ? "" : "(Invalid length?)"); + zlog_info (" Opaque data: "); + + for (i = 0; i < opaquelen; i++) + { + zlog_info ("0x%x ", olsa->data[i]); + } + zlog_info ("\n"); + } + return; +} + +/* ----------------------------------------------------------- + * Followings are functions to notify clients about events + * ----------------------------------------------------------- + */ + +/* Send a message to all clients. This is useful for messages + that need to be notified to all clients (such as interface + changes) */ + +void +ospf_apiserver_clients_notify_all (struct msg *msg) +{ + listnode node; + + /* Send message to all clients */ + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = + (struct ospf_apiserver *) getdata (node); + + ospf_apiserver_send_msg (apiserv, msg); + } +} + +/* An interface is now ready to accept opaque LSAs. Notify all + clients that registered to use this opaque type */ +void +ospf_apiserver_clients_notify_ready_type9 (struct ospf_interface *oi) +{ + listnode node; + struct msg *msg; + + assert (oi); + if (!oi->address) + { + zlog_warn ("Interface has no address?"); + return; + } + + if (!ospf_apiserver_is_ready_type9 (oi)) + { + zlog_warn ("Interface not ready for type 9?"); + return; + } + + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = + (struct ospf_apiserver *) getdata (node); + listnode n2; + + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + if (r->lsa_type == OSPF_OPAQUE_LINK_LSA) + { + msg = new_msg_ready_notify (0, OSPF_OPAQUE_LINK_LSA, + r->opaque_type, + oi->address->u.prefix4); + if (!msg) + { + zlog_warn + ("ospf_apiserver_clients_notify_ready_type9: new_msg_ready_notify failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + } + +out: + return; +} + +void +ospf_apiserver_clients_notify_ready_type10 (struct ospf_area *area) +{ + listnode node; + struct msg *msg; + + assert (area); + + if (!ospf_apiserver_is_ready_type10 (area)) + { + zlog_warn ("Area not ready for type 10?"); + return; + } + + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = + (struct ospf_apiserver *) getdata (node); + listnode n2; + + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + if (r->lsa_type == OSPF_OPAQUE_AREA_LSA) + { + msg = new_msg_ready_notify (0, OSPF_OPAQUE_AREA_LSA, + r->opaque_type, area->area_id); + if (!msg) + { + zlog_warn + ("ospf_apiserver_clients_notify_ready_type10: new_msg_ready_nofity failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + } + +out: + return; +} + + +void +ospf_apiserver_clients_notify_ready_type11 (struct ospf *top) +{ + listnode node; + struct msg *msg; + struct in_addr id_null = { 0L }; + + assert (top); + + if (!ospf_apiserver_is_ready_type11 (top)) + { + zlog_warn ("AS not ready for type 11?"); + return; + } + + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = + (struct ospf_apiserver *) getdata (node); + listnode n2; + + for (n2 = listhead (apiserv->opaque_types); n2; nextnode (n2)) + { + struct registered_opaque_type *r = + (struct registered_opaque_type *) getdata (n2); + if (r->lsa_type == OSPF_OPAQUE_AS_LSA) + { + msg = new_msg_ready_notify (0, OSPF_OPAQUE_AS_LSA, + r->opaque_type, id_null); + if (!msg) + { + zlog_warn + ("ospf_apiserver_clients_notify_ready_type11: new_msg_ready_notify failed"); +#ifdef NOTYET + /* Cannot allocate new message. What should we do? */ + ospf_apiserver_free (apiserv); +#endif + goto out; + } + + ospf_apiserver_send_msg (apiserv, msg); + msg_free (msg); + } + } + } + +out: + return; +} + +void +ospf_apiserver_clients_notify_new_if (struct ospf_interface *oi) +{ + struct msg *msg; + + msg = new_msg_new_if (0, oi->address->u.prefix4, oi->area->area_id); + if (msg != NULL) + { + ospf_apiserver_clients_notify_all (msg); + msg_free (msg); + } +} + +void +ospf_apiserver_clients_notify_del_if (struct ospf_interface *oi) +{ + struct msg *msg; + + msg = new_msg_del_if (0, oi->address->u.prefix4); + if (msg != NULL) + { + ospf_apiserver_clients_notify_all (msg); + msg_free (msg); + } +} + +void +ospf_apiserver_clients_notify_ism_change (struct ospf_interface *oi) +{ + struct msg *msg; + struct in_addr ifaddr = { 0L }; + struct in_addr area_id = { 0L }; + + assert (oi); + assert (oi->ifp); + + if (oi->address) + { + ifaddr = oi->address->u.prefix4; + } + if (oi->area) + { + area_id = oi->area->area_id; + } + + msg = new_msg_ism_change (0, ifaddr, area_id, oi->ifp->status); + if (!msg) + { + zlog_warn ("apiserver_clients_notify_ism_change: msg_new failed"); + return; + } + + ospf_apiserver_clients_notify_all (msg); + msg_free (msg); +} + +void +ospf_apiserver_clients_notify_nsm_change (struct ospf_neighbor *nbr) +{ + struct msg *msg; + struct in_addr ifaddr = { 0L }; + struct in_addr nbraddr = { 0L }; + + assert (nbr); + + if (nbr->oi) + { + ifaddr = nbr->oi->address->u.prefix4; + } + + nbraddr = nbr->address.u.prefix4; + + msg = new_msg_nsm_change (0, ifaddr, nbraddr, nbr->router_id, nbr->state); + if (!msg) + { + zlog_warn ("apiserver_clients_notify_nsm_change: msg_new failed"); + return; + } + + ospf_apiserver_clients_notify_all (msg); + msg_free (msg); +} + +void +apiserver_clients_lsa_change_notify (u_char msgtype, struct ospf_lsa *lsa) +{ + struct msg *msg; + listnode node; + + /* Default area for AS-External and Opaque11 LSAs */ + struct in_addr area_id = { 0L }; + + /* Default interface for non Opaque9 LSAs */ + struct in_addr ifaddr = { 0L }; + + if (lsa->area) + { + area_id = lsa->area->area_id; + } + if (lsa->data->type == OSPF_OPAQUE_LINK_LSA) + { + assert (lsa->oi); + ifaddr = lsa->oi->address->u.prefix4; + } + + /* Prepare message that can be sent to clients that have a matching + filter */ + msg = new_msg_lsa_change_notify (msgtype, 0L, /* no sequence number */ + ifaddr, area_id, + lsa->flags & OSPF_LSA_SELF, lsa->data); + if (!msg) + { + zlog_warn ("apiserver_clients_lsa_change_notify: msg_new failed"); + return; + } + + /* Now send message to all clients with a matching filter */ + for (node = listhead (apiserver_list); node; nextnode (node)) + { + struct ospf_apiserver *apiserv = (struct ospf_apiserver *) node->data; + struct lsa_filter_type *filter; + u_int16_t mask; + u_int32_t *area; + int i; + + /* Check filter for this client. */ + filter = apiserv->filter; + + /* Check area IDs in case of non AS-E LSAs. + * If filter has areas (num_areas > 0), + * then one of the areas must match the area ID of this LSA. */ + + i = filter->num_areas; + if ((lsa->data->type == OSPF_AS_EXTERNAL_LSA) || + (lsa->data->type == OSPF_OPAQUE_AS_LSA)) + { + i = 0; + } + + if (i > 0) + { + area = (u_int32_t *) (filter + 1); + while (i) + { + if (*area == area_id.s_addr) + { + break; + } + i--; + area++; + } + } + else + { + i = 1; + } + + if (i > 0) + { + /* Area match. Check LSA type. */ + mask = ntohs (filter->typemask); + + if (mask & Power2[lsa->data->type]) + { + /* Type also matches. Check origin. */ + if ((filter->origin == ANY_ORIGIN) || + (filter->origin == IS_LSA_SELF (lsa))) + { + ospf_apiserver_send_msg (apiserv, msg); + } + } + } + } + /* Free message since it is not used anymore */ + msg_free (msg); +} + + +/* ------------------------------------------------------------- + * Followings are hooks invoked when LSAs are updated or deleted + * ------------------------------------------------------------- + */ + + +int +apiserver_notify_clients_lsa (u_char msgtype, struct ospf_lsa *lsa) +{ + struct msg *msg; + /* default area for AS-External and Opaque11 LSAs */ + struct in_addr area_id = { 0L }; + + /* default interface for non Opaque9 LSAs */ + struct in_addr ifaddr = { 0L }; + + /* Only notify this update if the LSA's age is smaller than + MAXAGE. Otherwise clients would see LSA updates with max age just + before they are deleted from the LSDB. LSA delete messages have + MAXAGE too but should not be filtered. */ + if (IS_LSA_MAXAGE(lsa) && (msgtype == MSG_LSA_UPDATE_NOTIFY)) { + return 0; + } + + if (lsa->area) + { + area_id = lsa->area->area_id; + } + if (lsa->data->type == OSPF_OPAQUE_LINK_LSA) + { + ifaddr = lsa->oi->address->u.prefix4; + } + msg = new_msg_lsa_change_notify (msgtype, 0L, /* no sequence number */ + ifaddr, area_id, + lsa->flags & OSPF_LSA_SELF, lsa->data); + if (!msg) + { + zlog_warn ("notify_clients_lsa: msg_new failed"); + return -1; + } + /* Notify all clients that new LSA is added/updated */ + apiserver_clients_lsa_change_notify (msgtype, lsa); + + /* Clients made their own copies of msg so we can free msg here */ + msg_free (msg); + + return 0; +} + +int +ospf_apiserver_lsa_update (struct ospf_lsa *lsa) +{ + return apiserver_notify_clients_lsa (MSG_LSA_UPDATE_NOTIFY, lsa); +} + +int +ospf_apiserver_lsa_delete (struct ospf_lsa *lsa) +{ + return apiserver_notify_clients_lsa (MSG_LSA_DELETE_NOTIFY, lsa); +} + +#endif /* SUPPORT_OSPF_API */ + diff --git a/ospfd/ospf_apiserver.h b/ospfd/ospf_apiserver.h new file mode 100644 index 00000000..c7145782 --- /dev/null +++ b/ospfd/ospf_apiserver.h @@ -0,0 +1,201 @@ +/* + * Server side of OSPF API. + * Copyright (C) 2001, 2002 Ralph Keller + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _OSPF_APISERVER_H +#define _OSPF_APISERVER_H + +/* MTYPE definition is not reflected to "memory.h". */ +#define MTYPE_OSPF_APISERVER MTYPE_TMP +#define MTYPE_OSPF_APISERVER_MSGFILTER MTYPE_TMP + +/* List of opaque types that application registered */ +struct registered_opaque_type +{ + u_char lsa_type; + u_char opaque_type; +}; + + +/* Server instance for each accepted client connection. */ +struct ospf_apiserver +{ + /* Socket connections for synchronous commands and asynchronous + notifications */ + int fd_sync; /* synchronous requests */ + struct sockaddr_in peer_sync; + + int fd_async; /* asynchronous notifications */ + struct sockaddr_in peer_async; + + /* List of all opaque types that application registers to use. Using + a single connection with the OSPF daemon, multiple + <lsa,opaque_type> pairs can be registered. However, each + combination can only be registered once by all applications. */ + list opaque_types; /* of type registered_opaque_type */ + + /* Temporary storage for LSA instances to be refreshed. */ + struct ospf_lsdb reserve; + + /* filter for LSA update/delete notifies */ + struct lsa_filter_type *filter; + + /* Fifo buffers for outgoing messages */ + struct msg_fifo *out_sync_fifo; + struct msg_fifo *out_async_fifo; + + /* Read and write threads */ + struct thread *t_sync_read; +#ifdef USE_ASYNC_READ + struct thread *t_async_read; +#endif /* USE_ASYNC_READ */ + struct thread *t_sync_write; + struct thread *t_async_write; +}; + +enum event +{ + OSPF_APISERVER_ACCEPT, + OSPF_APISERVER_SYNC_READ, +#ifdef USE_ASYNC_READ + OSPF_APISERVER_ASYNC_READ, +#endif /* USE_ASYNC_READ */ + OSPF_APISERVER_SYNC_WRITE, + OSPF_APISERVER_ASYNC_WRITE +}; + +/* ----------------------------------------------------------- + * Followings are functions to manage client connections. + * ----------------------------------------------------------- + */ + +unsigned short ospf_apiserver_getport (void); +int ospf_apiserver_init (void); +void ospf_apiserver_term (void); +struct ospf_apiserver *ospf_apiserver_new (int fd_sync, int fd_async); +void ospf_apiserver_free (struct ospf_apiserver *apiserv); +void ospf_apiserver_event (enum event event, int fd, + struct ospf_apiserver *apiserv); +int ospf_apiserver_serv_sock_family (unsigned short port, int family); +int ospf_apiserver_accept (struct thread *thread); +int ospf_apiserver_read (struct thread *thread); +int ospf_apiserver_sync_write (struct thread *thread); +int ospf_apiserver_async_write (struct thread *thread); +int ospf_apiserver_send_reply (struct ospf_apiserver *apiserv, + u_int32_t seqnr, u_char rc); + +/* ----------------------------------------------------------- + * Followings are message handler functions + * ----------------------------------------------------------- + */ + +int ospf_apiserver_lsa9_originator (void *arg); +int ospf_apiserver_lsa10_originator (void *arg); +int ospf_apiserver_lsa11_originator (void *arg); + +void ospf_apiserver_clients_notify_all (struct msg *msg); + +void ospf_apiserver_clients_notify_ready_type9 (struct ospf_interface *oi); +void ospf_apiserver_clients_notify_ready_type10 (struct ospf_area *area); +void ospf_apiserver_clients_notify_ready_type11 (struct ospf *top); + +void ospf_apiserver_clients_notify_new_if (struct ospf_interface *oi); +void ospf_apiserver_clients_notify_del_if (struct ospf_interface *oi); +void ospf_apiserver_clients_notify_ism_change (struct ospf_interface *oi); +void ospf_apiserver_clients_notify_nsm_change (struct ospf_neighbor *nbr); + +int ospf_apiserver_is_ready_type9 (struct ospf_interface *oi); +int ospf_apiserver_is_ready_type10 (struct ospf_area *area); +int ospf_apiserver_is_ready_type11 (struct ospf *ospf); + +void ospf_apiserver_notify_ready_type9 (struct ospf_apiserver *apiserv); +void ospf_apiserver_notify_ready_type10 (struct ospf_apiserver *apiserv); +void ospf_apiserver_notify_ready_type11 (struct ospf_apiserver *apiserv); + +int ospf_apiserver_handle_msg (struct ospf_apiserver *apiserv, + struct msg *msg); +int ospf_apiserver_handle_register_opaque_type (struct ospf_apiserver + *apiserv, struct msg *msg); +int ospf_apiserver_handle_unregister_opaque_type (struct ospf_apiserver + *apiserv, struct msg *msg); +int ospf_apiserver_handle_register_event (struct ospf_apiserver *apiserv, + struct msg *msg); +int ospf_apiserver_handle_originate_request (struct ospf_apiserver *apiserv, + struct msg *msg); +int ospf_apiserver_handle_delete_request (struct ospf_apiserver *apiserv, + struct msg *msg); +int ospf_apiserver_handle_sync_lsdb (struct ospf_apiserver *apiserv, + struct msg *msg); + + +/* ----------------------------------------------------------- + * Followings are functions for LSA origination/deletion + * ----------------------------------------------------------- + */ + +int ospf_apiserver_register_opaque_type (struct ospf_apiserver *apiserver, + u_char lsa_type, u_char opaque_type); +int ospf_apiserver_unregister_opaque_type (struct ospf_apiserver *apiserver, + u_char lsa_type, + u_char opaque_type); +struct ospf_lsa *ospf_apiserver_opaque_lsa_new (struct ospf_area *area, + struct ospf_interface *oi, + struct lsa_header *protolsa); +struct ospf_interface *ospf_apiserver_if_lookup_by_addr (struct in_addr + address); +struct ospf_interface *ospf_apiserver_if_lookup_by_ifp (struct interface + *ifp); +int ospf_apiserver_originate1 (struct ospf_lsa *lsa); +void ospf_apiserver_flood_opaque_lsa (struct ospf_lsa *lsa); + + +/* ----------------------------------------------------------- + * Followings are callback functions to handle opaque types + * ----------------------------------------------------------- + */ + +int ospf_apiserver_new_if (struct interface *ifp); +int ospf_apiserver_del_if (struct interface *ifp); +void ospf_apiserver_ism_change (struct ospf_interface *oi, int old_status); +void ospf_apiserver_nsm_change (struct ospf_neighbor *nbr, int old_status); +void ospf_apiserver_config_write_router (struct vty *vty); +void ospf_apiserver_config_write_if (struct vty *vty, struct interface *ifp); +void ospf_apiserver_show_info (struct vty *vty, struct ospf_lsa *lsa); +int ospf_ospf_apiserver_lsa_originator (void *arg); +void ospf_apiserver_lsa_refresher (struct ospf_lsa *lsa); +void ospf_apiserver_flush_opaque_lsa (struct ospf_apiserver *apiserv, + u_char lsa_type, u_char opaque_type); + +/* ----------------------------------------------------------- + * Followings are hooks when LSAs are updated or deleted + * ----------------------------------------------------------- + */ + + +/* Hooks that are invoked from ospf opaque module */ + +int ospf_apiserver_lsa_update (struct ospf_lsa *lsa); +int ospf_apiserver_lsa_delete (struct ospf_lsa *lsa); + +void ospf_apiserver_clients_lsa_change_notify (u_char msgtype, + struct ospf_lsa *lsa); + +#endif /* _OSPF_APISERVER_H */ diff --git a/ospfd/ospf_asbr.c b/ospfd/ospf_asbr.c index fda32ae1..d13bbc43 100644 --- a/ospfd/ospf_asbr.c +++ b/ospfd/ospf_asbr.c @@ -43,16 +43,15 @@ #include "ospfd/ospf_route.h" #include "ospfd/ospf_zebra.h" #include "ospfd/ospf_dump.h" - /* Remove external route. */ void -ospf_external_route_remove (struct ospf *ospf, struct prefix_ipv4 *p) +ospf_external_route_remove (struct prefix_ipv4 *p) { struct route_node *rn; struct ospf_route *or; - rn = route_node_lookup (ospf->old_external_route, (struct prefix *) p); + rn = route_node_lookup (ospf_top->old_external_route, (struct prefix *) p); if (rn) if ((or = rn->info)) { @@ -77,12 +76,11 @@ ospf_external_route_remove (struct ospf *ospf, struct prefix_ipv4 *p) /* Lookup external route. */ struct ospf_route * -ospf_external_route_lookup (struct ospf *ospf, - struct prefix_ipv4 *p) +ospf_external_route_lookup (struct prefix_ipv4 *p) { struct route_node *rn; - rn = route_node_lookup (ospf->old_external_route, (struct prefix *) p); + rn = route_node_lookup (ospf_top->old_external_route, (struct prefix *) p); if (rn) { route_unlock_node (rn); @@ -205,15 +203,14 @@ ospf_external_info_lookup (u_char type, struct prefix_ipv4 *p) } struct ospf_lsa * -ospf_external_info_find_lsa (struct ospf *ospf, - struct prefix_ipv4 *p) +ospf_external_info_find_lsa (struct prefix_ipv4 *p) { struct ospf_lsa *lsa; struct as_external_lsa *al; struct in_addr mask, id; - lsa = ospf_lsdb_lookup_by_id (ospf->lsdb, OSPF_AS_EXTERNAL_LSA, - p->prefix, ospf->router_id); + lsa = ospf_lsdb_lookup_by_id (ospf_top->lsdb, OSPF_AS_EXTERNAL_LSA, + p->prefix, ospf_top->router_id); if (!lsa) return NULL; @@ -225,8 +222,8 @@ ospf_external_info_find_lsa (struct ospf *ospf, if (mask.s_addr != al->mask.s_addr) { id.s_addr = p->prefix.s_addr | (~mask.s_addr); - lsa = ospf_lsdb_lookup_by_id (ospf->lsdb, OSPF_AS_EXTERNAL_LSA, - id, ospf->router_id); + lsa = ospf_lsdb_lookup_by_id (ospf_top->lsdb, OSPF_AS_EXTERNAL_LSA, + id, ospf_top->router_id); if (!lsa) return NULL; } @@ -237,7 +234,7 @@ ospf_external_info_find_lsa (struct ospf *ospf, /* Update ASBR status. */ void -ospf_asbr_status_update (struct ospf *ospf, u_char status) +ospf_asbr_status_update (u_char status) { zlog_info ("ASBR[Status:%d]: Update", status); @@ -245,49 +242,46 @@ ospf_asbr_status_update (struct ospf *ospf, u_char status) if (status) { /* Already ASBR. */ - if (IS_OSPF_ASBR (ospf)) + if (OSPF_IS_ASBR) { zlog_info ("ASBR[Status:%d]: Already ASBR", status); return; } - SET_FLAG (ospf->flags, OSPF_FLAG_ASBR); + SET_FLAG (ospf_top->flags, OSPF_FLAG_ASBR); } else { /* Already non ASBR. */ - if (! IS_OSPF_ASBR (ospf)) + if (! OSPF_IS_ASBR) { zlog_info ("ASBR[Status:%d]: Already non ASBR", status); return; } - UNSET_FLAG (ospf->flags, OSPF_FLAG_ASBR); + UNSET_FLAG (ospf_top->flags, OSPF_FLAG_ASBR); } /* Transition from/to status ASBR, schedule timer. */ - ospf_spf_calculate_schedule (ospf); - OSPF_TIMER_ON (ospf->t_router_lsa_update, + ospf_spf_calculate_schedule (); + OSPF_TIMER_ON (ospf_top->t_router_lsa_update, ospf_router_lsa_update_timer, OSPF_LSA_UPDATE_DELAY); } void ospf_redistribute_withdraw (u_char type) { - struct ospf *ospf; struct route_node *rn; struct external_info *ei; - ospf = ospf_lookup (); - /* Delete external info for specified type. */ if (EXTERNAL_INFO (type)) for (rn = route_top (EXTERNAL_INFO (type)); rn; rn = route_next (rn)) if ((ei = rn->info)) - if (ospf_external_info_find_lsa (ospf, &ei->p)) + if (ospf_external_info_find_lsa (&ei->p)) { if (is_prefix_default (&ei->p) && - ospf->default_originate != DEFAULT_ORIGINATE_NONE) + ospf_top->default_originate != DEFAULT_ORIGINATE_NONE) continue; - ospf_external_lsa_flush (ospf, type, &ei->p, ei->ifindex, ei->nexthop); + ospf_external_lsa_flush (type, &ei->p, ei->ifindex, ei->nexthop); ospf_external_info_delete (type, ei->p); } } diff --git a/ospfd/ospf_asbr.h b/ospfd/ospf_asbr.h index ddfa9fae..f368246d 100644 --- a/ospfd/ospf_asbr.h +++ b/ospfd/ospf_asbr.h @@ -54,23 +54,22 @@ struct external_info #define OSPF_ASBR_CHECK_DELAY 30 -void ospf_external_route_remove (struct ospf *, struct prefix_ipv4 *); +void ospf_external_route_remove (struct prefix_ipv4 *p); struct external_info *ospf_external_info_new (u_char); -void ospf_reset_route_map_set_values (struct route_map_set_values *); -int ospf_route_map_set_compare (struct route_map_set_values *, - struct route_map_set_values *); +void ospf_reset_route_map_set_values (struct route_map_set_values *values); +int ospf_route_map_set_compare (struct route_map_set_values *values1, + struct route_map_set_values *values2); struct external_info *ospf_external_info_add (u_char, struct prefix_ipv4, unsigned int, struct in_addr); void ospf_external_info_delete (u_char, struct prefix_ipv4); struct external_info *ospf_external_info_lookup (u_char, struct prefix_ipv4 *); -void ospf_asbr_status_update (struct ospf *, u_char); +void ospf_asbr_status_update (u_char); void ospf_redistribute_withdraw (u_char); void ospf_asbr_check (); void ospf_schedule_asbr_check (); void ospf_asbr_route_install_lsa (struct ospf_lsa *); -struct ospf_lsa *ospf_external_info_find_lsa (struct ospf *, - struct prefix_ipv4 *p); +struct ospf_lsa *ospf_external_info_find_lsa (struct prefix_ipv4 *p); #endif /* _ZEBRA_OSPF_ASBR_H */ diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c index b28626db..5605933b 100644 --- a/ospfd/ospf_ase.c +++ b/ospfd/ospf_ase.c @@ -155,7 +155,7 @@ ospf_ase_forward_address_check (struct ospf *ospf, struct in_addr fwd_addr) for (ifn = listhead (ospf->oiflist); ifn; nextnode (ifn)) if ((oi = getdata (ifn)) != NULL) - if (if_is_up (oi->ifp)) + if (if_is_operative (oi->ifp)) if (oi->type != OSPF_IFTYPE_VIRTUALLINK) if (IPV4_ADDR_SAME (&oi->address->u.prefix4, &fwd_addr)) return 0; @@ -644,6 +644,10 @@ ospf_ase_calculate_timer (struct thread *t) LSDB_LOOP (NSSA_LSDB (area), rn, lsa) ospf_ase_calculate_route (ospf, lsa); } + /* kevinm: And add the NSSA routes in ospf_top */ + LSDB_LOOP (NSSA_LSDB (ospf),rn,lsa) + ospf_ase_calculate_route(ospf,lsa); + #endif /* HAVE_NSSA */ /* Compare old and new external routing table and install the diff --git a/ospfd/ospf_ase.h b/ospfd/ospf_ase.h index d2fee1a1..f403e26d 100644 --- a/ospfd/ospf_ase.h +++ b/ospfd/ospf_ase.h @@ -24,18 +24,18 @@ #define _ZEBRA_OSPF_ASE_H -struct ospf_route *ospf_find_asbr_route (struct ospf *, struct route_table *, +struct ospf_route *ospf_find_asbr_route (struct route_table *, struct prefix_ipv4 *); struct ospf_route *ospf_find_asbr_route_through_area(struct route_table *, struct prefix_ipv4 *, struct ospf_area *); -int ospf_ase_calculate_route (struct ospf *, struct ospf_lsa *); -void ospf_ase_calculate_schedule (struct ospf *); -void ospf_ase_calculate_timer_add (struct ospf *); +int ospf_ase_calculate_route (struct ospf_lsa *, void *, int); +void ospf_ase_calculate_schedule (); +void ospf_ase_calculate_timer_add (); void ospf_ase_external_lsas_finish (struct route_table *); -void ospf_ase_incremental_update (struct ospf *, struct ospf_lsa *); +void ospf_ase_incremental_update (struct ospf_lsa *, struct ospf *); void ospf_ase_register_external_lsa (struct ospf_lsa *, struct ospf *); void ospf_ase_unregister_external_lsa (struct ospf_lsa *, struct ospf *); diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c index da2e0973..f563fb89 100644 --- a/ospfd/ospf_dump.c +++ b/ospfd/ospf_dump.c @@ -1470,6 +1470,8 @@ DEFUN (show_debugging_ospf, if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE)) vty_out (vty, " OSPF Zebra redistribute debugging is on%s", VTY_NEWLINE); } + if (IS_DEBUG_OSPF (nssa, NSSA) == OSPF_DEBUG_NSSA) + vty_out (vty, " OSPF NSSA debugging is on%s", VTY_NEWLINE); return CMD_SUCCESS; } diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c index cf88761e..1c8cbbf5 100644 --- a/ospfd/ospf_flood.c +++ b/ospfd/ospf_flood.c @@ -654,6 +654,7 @@ ospf_flood_through_as (struct ospf *ospf, struct ospf_neighbor *inbr, /* Type-7, flood NSSA area */ if (lsa->data->type == OSPF_AS_NSSA_LSA && area == lsa->area) + /* We will send it. */ continue_flag = 0; else continue_flag = 1; /* Skip this NSSA area for Type-5's et al */ diff --git a/ospfd/ospf_flood.h b/ospfd/ospf_flood.h index 2e3f0832..1a6ab979 100644 --- a/ospfd/ospf_flood.h +++ b/ospfd/ospf_flood.h @@ -20,17 +20,14 @@ * Boston, MA 02111-1307, USA. */ -#ifndef _ZEBRA_OSPF_FLOOD_H -#define _ZEBRA_OSPF_FLOOD_H +#ifndef _ZEBRA_OSPF_FLOODING_H +#define _ZEBRA_OSPF_FLOODING_H -int ospf_flood (struct ospf *, struct ospf_neighbor *, struct ospf_lsa *, - struct ospf_lsa *); -int ospf_flood_through (struct ospf *, struct ospf_neighbor *, - struct ospf_lsa *); +int ospf_flood (struct ospf_neighbor *, struct ospf_lsa *, struct ospf_lsa *); +int ospf_flood_through (struct ospf_neighbor *, struct ospf_lsa *); int ospf_flood_through_area (struct ospf_area *, struct ospf_neighbor *, struct ospf_lsa *); -int ospf_flood_through_as (struct ospf *, struct ospf_neighbor *, - struct ospf_lsa *); +int ospf_flood_through_as (struct ospf_neighbor *, struct ospf_lsa *); unsigned long ospf_ls_request_count (struct ospf_neighbor *); int ospf_ls_request_isempty (struct ospf_neighbor *); @@ -50,18 +47,19 @@ void ospf_ls_retransmit_delete (struct ospf_neighbor *, struct ospf_lsa *); void ospf_ls_retransmit_clear (struct ospf_neighbor *); struct ospf_lsa *ospf_ls_retransmit_lookup (struct ospf_neighbor *, struct ospf_lsa *); -void ospf_ls_retransmit_delete_nbr_area (struct ospf_area *, - struct ospf_lsa *); -void ospf_ls_retransmit_delete_nbr_as (struct ospf *, struct ospf_lsa *); +void ospf_ls_retransmit_delete_nbr_all (struct ospf_area *, struct ospf_lsa *); void ospf_ls_retransmit_add_nbr_all (struct ospf_interface *, struct ospf_lsa *); void ospf_flood_lsa_area (struct ospf_lsa *, struct ospf_area *); void ospf_flood_lsa_as (struct ospf_lsa *); void ospf_lsa_flush_area (struct ospf_lsa *, struct ospf_area *); -void ospf_lsa_flush_as (struct ospf *, struct ospf_lsa *); +void ospf_lsa_flush_as (struct ospf_lsa *); +void ospf_flush_through_as (struct ospf_lsa *); struct external_info *ospf_external_info_check (struct ospf_lsa *); +void debug_ospf_ls_retransmit (struct ospf_neighbor *); + void ospf_lsdb_init (struct ospf_lsdb *); -#endif /* _ZEBRA_OSPF_FLOOD_H */ +#endif /* _ZEBRA_OSPF_FLOODING_H */ diff --git a/ospfd/ospf_ia.c b/ospfd/ospf_ia.c index 59f86669..32c8d86b 100644 --- a/ospfd/ospf_ia.c +++ b/ospfd/ospf_ia.c @@ -71,9 +71,8 @@ ospf_find_abr_route (struct route_table *rtrs, } void -ospf_ia_network_route (struct ospf *ospf, struct route_table *rt, - struct prefix_ipv4 *p, struct ospf_route *new_or, - struct ospf_route *abr_or) +ospf_ia_network_route (struct route_table *rt, struct prefix_ipv4 *p, + struct ospf_route *new_or, struct ospf_route *abr_or) { struct route_node *rn1; struct ospf_route *or; @@ -95,7 +94,7 @@ ospf_ia_network_route (struct ospf *ospf, struct route_table *rt, zlog_info ("ospf_ia_network_route(): " "Found a route to the same network"); /* Check the existing route. */ - if ((res = ospf_route_cmp (ospf, new_or, or)) < 0) + if ((res = ospf_route_cmp (new_or, or)) < 0) { /* New route is better, so replace old one. */ ospf_route_subst (rn1, new_or, abr_or); @@ -128,19 +127,18 @@ ospf_ia_network_route (struct ospf *ospf, struct route_table *rt, } void -ospf_ia_router_route (struct ospf *ospf, struct route_table *rtrs, - struct prefix_ipv4 *p, +ospf_ia_router_route (struct route_table *rt, struct prefix_ipv4 *p, struct ospf_route *new_or, struct ospf_route *abr_or) { - struct ospf_route *or = NULL; struct route_node *rn; + struct ospf_route *or = NULL; int ret; if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_router_route(): considering %s/%d", inet_ntoa (p->prefix), p->prefixlen); /* Find a route to the same dest */ - rn = route_node_get (rtrs, (struct prefix *) p); + rn = route_node_get (rt,(struct prefix *) p); if (rn->info == NULL) /* This is a new route */ @@ -148,11 +146,11 @@ ospf_ia_router_route (struct ospf *ospf, struct route_table *rtrs, else { struct ospf_area *or_area; - or_area = ospf_area_lookup_by_area_id (ospf, new_or->u.std.area_id); + or_area = ospf_area_lookup_by_area_id (new_or->u.std.area_id); assert (or_area); /* This is an additional route */ route_unlock_node (rn); - or = ospf_find_asbr_route_through_area (rtrs, p, or_area); + or = ospf_find_asbr_route_through_area (rt, p, or_area); } if (or) @@ -161,7 +159,7 @@ ospf_ia_router_route (struct ospf *ospf, struct route_table *rtrs, zlog_info ("ospf_ia_router_route(): " "a route to the same ABR through the same area exists"); /* New route is better */ - if ((ret = ospf_route_cmp (ospf, new_or, or)) < 0) + if ((ret = ospf_route_cmp (new_or, or)) < 0) { listnode_delete (rn->info, or); ospf_route_free (or); @@ -196,21 +194,28 @@ ospf_ia_router_route (struct ospf *ospf, struct route_table *rtrs, } +struct ia_args +{ + struct route_table *rt; + struct route_table *rtrs; + struct ospf_area *area; +}; + int -process_summary_lsa (struct ospf_area *area, struct route_table *rt, - struct route_table *rtrs, struct ospf_lsa *lsa) +process_summary_lsa (struct ospf_lsa *l, void *v, int i) { - struct ospf *ospf = area->ospf; struct ospf_area_range *range; struct ospf_route *abr_or, *new_or; struct summary_lsa *sl; struct prefix_ipv4 p, abr; u_int32_t metric; + struct ia_args *args; - if (lsa == NULL) + if (l == NULL) return 0; - sl = (struct summary_lsa *) lsa->data; + args = (struct ia_args *) v; + sl = (struct summary_lsa *) l->data; if (IS_DEBUG_OSPF_EVENT) zlog_info ("process_summary_lsa(): LS ID: %s", inet_ntoa (sl->header.id)); @@ -220,10 +225,10 @@ process_summary_lsa (struct ospf_area *area, struct route_table *rt, if (metric == OSPF_LS_INFINITY) return 0; - if (IS_LSA_MAXAGE (lsa)) + if (IS_LSA_MAXAGE (l)) return 0; - if (ospf_lsa_is_self_originated (area->ospf, lsa)) + if (ospf_lsa_is_self_originated (l)) return 0; p.family = AF_INET; @@ -237,12 +242,12 @@ process_summary_lsa (struct ospf_area *area, struct route_table *rt, apply_mask_ipv4 (&p); if (sl->header.type == OSPF_SUMMARY_LSA && - (range = ospf_area_range_match_any (ospf, &p)) && + (range = ospf_area_range_match_any (ospf_top, &p)) && ospf_area_range_active (range)) return 0; - if (ospf->abr_type != OSPF_ABR_STAND && - area->external_routing != OSPF_AREA_DEFAULT && + if (ospf_top->abr_type != OSPF_ABR_STAND && + args->area->external_routing != OSPF_AREA_DEFAULT && p.prefix.s_addr == OSPF_DEFAULT_DESTINATION && p.prefixlen == 0) return 0; /* Ignore summary default from a stub area */ @@ -252,7 +257,7 @@ process_summary_lsa (struct ospf_area *area, struct route_table *rt, abr.prefixlen = IPV4_MAX_BITLEN; apply_mask_ipv4 (&abr); - abr_or = ospf_find_abr_route (rtrs, &abr, area); + abr_or = ospf_find_abr_route (args->rtrs, &abr, args->area); if (abr_or == NULL) return 0; @@ -264,35 +269,32 @@ process_summary_lsa (struct ospf_area *area, struct route_table *rt, new_or->u.std.options = sl->header.options; new_or->u.std.origin = (struct lsa_header *) sl; new_or->cost = abr_or->cost + metric; - new_or->u.std.area_id = area->area_id; + new_or->u.std.area_id = args->area->area_id; #ifdef HAVE_NSSA - new_or->u.std.external_routing = area->external_routing; + new_or->u.std.external_routing = args->area->external_routing; #endif /* HAVE_NSSA */ new_or->path_type = OSPF_PATH_INTER_AREA; if (sl->header.type == OSPF_SUMMARY_LSA) - ospf_ia_network_route (ospf, rt, &p, new_or, abr_or); + ospf_ia_network_route (args->rt, &p, new_or, abr_or); else { new_or->type = OSPF_DESTINATION_ROUTER; new_or->u.std.flags = ROUTER_LSA_EXTERNAL; - ospf_ia_router_route (ospf, rtrs, &p, new_or, abr_or); + ospf_ia_router_route (args->rtrs, &p, new_or, abr_or); } return 0; } void -ospf_examine_summaries (struct ospf_area *area, +ospf_examine_summaries (struct ospf_area * area, struct route_table *lsdb_rt, struct route_table *rt, struct route_table *rtrs) { - struct ospf_lsa *lsa; - struct route_node *rn; - - LSDB_LOOP (lsdb_rt, rn, lsa) - process_summary_lsa (area, rt, rtrs, lsa); + struct ia_args args = {rt, rtrs, area}; + foreach_lsa (lsdb_rt, &args, 0, process_summary_lsa); } int @@ -303,8 +305,7 @@ ospf_area_is_transit (struct ospf_area *area) } void -ospf_update_network_route (struct ospf *ospf, - struct route_table *rt, +ospf_update_network_route (struct route_table *rt, struct route_table *rtrs, struct summary_lsa *lsa, struct prefix_ipv4 *p, @@ -335,7 +336,7 @@ ospf_update_network_route (struct ospf *ospf, if (! rn) { - if (ospf->abr_type != OSPF_ABR_SHORTCUT) + if (ospf_top->abr_type != OSPF_ABR_SHORTCUT) return; /* Standard ABR can update only already installed backbone paths */ if (IS_DEBUG_OSPF_EVENT) @@ -374,7 +375,7 @@ ospf_update_network_route (struct ospf *ospf, return; } - if (ospf->abr_type == OSPF_ABR_SHORTCUT) + if (ospf_top->abr_type == OSPF_ABR_SHORTCUT) { if (or->path_type == OSPF_PATH_INTRA_AREA && !OSPF_IS_AREA_ID_BACKBONE (or->u.std.area_id)) @@ -419,7 +420,7 @@ ospf_update_network_route (struct ospf *ospf, ospf_route_subst_nexthops (or, abr_or->path); or->cost = cost; - if ((ospf->abr_type == OSPF_ABR_SHORTCUT) && + if ((ospf_top->abr_type == OSPF_ABR_SHORTCUT) && !OSPF_IS_AREA_ID_BACKBONE (or->u.std.area_id)) { or->path_type = OSPF_PATH_INTER_AREA; @@ -436,8 +437,7 @@ ospf_update_network_route (struct ospf *ospf, } void -ospf_update_router_route (struct ospf *ospf, - struct route_table *rtrs, +ospf_update_router_route (struct route_table *rtrs, struct summary_lsa *lsa, struct prefix_ipv4 *p, struct ospf_area *area) @@ -465,17 +465,17 @@ ospf_update_router_route (struct ospf *ospf, /* First try to find a backbone path, because standard ABR can update only BB-associated paths */ - if ((ospf->backbone == NULL) && - (ospf->abr_type != OSPF_ABR_SHORTCUT)) + if ((ospf_top->backbone == NULL) && + (ospf_top->abr_type != OSPF_ABR_SHORTCUT)) /* no BB area, not Shortcut ABR, exiting */ return; - or = ospf_find_asbr_route_through_area (rtrs, p, ospf->backbone); + or = ospf_find_asbr_route_through_area (rtrs, p, ospf_top->backbone); if (or == NULL) { - if (ospf->abr_type != OSPF_ABR_SHORTCUT) + if (ospf_top->abr_type != OSPF_ABR_SHORTCUT) /* route to ASBR through the BB not found the router is not Shortcut ABR, exiting */ @@ -500,7 +500,7 @@ ospf_update_router_route (struct ospf *ospf, #endif /* HAVE_NSSA */ new_or->path_type = OSPF_PATH_INTER_AREA; new_or->u.std.flags = ROUTER_LSA_EXTERNAL; - ospf_ia_router_route (ospf, rtrs, p, new_or, abr_or); + ospf_ia_router_route (rtrs, p, new_or, abr_or); return; } @@ -537,22 +537,22 @@ ospf_update_router_route (struct ospf *ospf, } int -process_transit_summary_lsa (struct ospf_area *area, struct route_table *rt, - struct route_table *rtrs, struct ospf_lsa *lsa) +process_transit_summary_lsa (struct ospf_lsa *l, void *v, int i) { - struct ospf *ospf = area->ospf; struct summary_lsa *sl; struct prefix_ipv4 p; u_int32_t metric; + struct ia_args *args; - if (lsa == NULL) + if (l == NULL) return 0; - sl = (struct summary_lsa *) lsa->data; + args = (struct ia_args *) v; + sl = (struct summary_lsa *) l->data; if (IS_DEBUG_OSPF_EVENT) zlog_info ("process_transit_summaries(): LS ID: %s", - inet_ntoa (lsa->data->id)); + inet_ntoa (l->data->id)); metric = GET_METRIC (sl->metric); if (metric == OSPF_LS_INFINITY) @@ -562,14 +562,14 @@ process_transit_summary_lsa (struct ospf_area *area, struct route_table *rt, return 0; } - if (IS_LSA_MAXAGE (lsa)) + if (IS_LSA_MAXAGE (l)) { if (IS_DEBUG_OSPF_EVENT) zlog_info ("process_transit_summaries(): This LSA is too old"); return 0; } - if (ospf_lsa_is_self_originated (area->ospf, lsa)) + if (ospf_lsa_is_self_originated (l)) { if (IS_DEBUG_OSPF_EVENT) zlog_info ("process_transit_summaries(): This LSA is mine, skip"); @@ -587,29 +587,28 @@ process_transit_summary_lsa (struct ospf_area *area, struct route_table *rt, apply_mask_ipv4 (&p); if (sl->header.type == OSPF_SUMMARY_LSA) - ospf_update_network_route (ospf, rt, rtrs, sl, &p, area); + ospf_update_network_route (args->rt, args->rtrs, sl, &p, args->area); else - ospf_update_router_route (ospf, rtrs, sl, &p, area); + ospf_update_router_route (args->rtrs, sl, &p, args->area); return 0; } void ospf_examine_transit_summaries (struct ospf_area *area, + /* struct ospf_lsdb *lsdb, */ struct route_table *lsdb_rt, struct route_table *rt, struct route_table *rtrs) { - struct ospf_lsa *lsa; - struct route_node *rn; + struct ia_args args = {rt, rtrs, area}; - LSDB_LOOP (lsdb_rt, rn, lsa) - process_transit_summary_lsa (area, rt, rtrs, lsa); + /* ospf_lsdb_iterator (lsdb, &args, 0, process_transit_summary_lsa); */ + foreach_lsa (lsdb_rt, &args, 0, process_transit_summary_lsa); } void -ospf_ia_routing (struct ospf *ospf, - struct route_table *rt, +ospf_ia_routing (struct route_table *rt, struct route_table *rtrs) { struct ospf_area * area; @@ -617,18 +616,18 @@ ospf_ia_routing (struct ospf *ospf, if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing():start"); - if (IS_OSPF_ABR (ospf)) + if (OSPF_IS_ABR) { listnode node; struct ospf_area *area; - switch (ospf->abr_type) + switch (ospf_top->abr_type) { case OSPF_ABR_STAND: if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing():Standard ABR"); - if ((area = ospf->backbone)) + if ((area = ospf_top->backbone)) { listnode node; @@ -640,9 +639,9 @@ ospf_ia_routing (struct ospf *ospf, OSPF_EXAMINE_SUMMARIES_ALL (area, rt, rtrs); - for (node = listhead (ospf->areas); node; nextnode (node)) + for (node = listhead (ospf_top->areas); node; nextnode (node)) if ((area = getdata (node)) != NULL) - if (area != ospf->backbone) + if (area != ospf_top->backbone) if (ospf_area_is_transit (area)) OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL (area, rt, rtrs); } @@ -654,10 +653,10 @@ ospf_ia_routing (struct ospf *ospf, case OSPF_ABR_CISCO: if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing():Alternative Cisco/IBM ABR"); - area = ospf->backbone; /* Find the BB */ + area = ospf_top->backbone; /* Find the BB */ /* If we have an active BB connection */ - if (area && ospf_act_bb_connection (ospf)) + if (area && ospf_act_bb_connection ()) { if (IS_DEBUG_OSPF_EVENT) { @@ -667,9 +666,9 @@ ospf_ia_routing (struct ospf *ospf, OSPF_EXAMINE_SUMMARIES_ALL (area, rt, rtrs); - for (node = listhead (ospf->areas); node; nextnode (node)) + for (node = listhead (ospf_top->areas); node; nextnode (node)) if ((area = getdata (node)) != NULL) - if (area != ospf->backbone) + if (area != ospf_top->backbone) if (ospf_area_is_transit (area)) OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL (area, rt, rtrs); } @@ -678,7 +677,7 @@ ospf_ia_routing (struct ospf *ospf, if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing(): " "Active BB connection not found"); - for (node = listhead (ospf->areas); node; nextnode (node)) + for (node = listhead (ospf_top->areas); node; nextnode (node)) if ((area = getdata (node)) != NULL) OSPF_EXAMINE_SUMMARIES_ALL (area, rt, rtrs); } @@ -686,10 +685,10 @@ ospf_ia_routing (struct ospf *ospf, case OSPF_ABR_SHORTCUT: if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing():Alternative Shortcut"); - area = ospf->backbone; /* Find the BB */ + area = ospf_top->backbone; /* Find the BB */ /* If we have an active BB connection */ - if (area && ospf_act_bb_connection (ospf)) + if (area && ospf_act_bb_connection ()) { if (IS_DEBUG_OSPF_EVENT) { @@ -699,12 +698,12 @@ ospf_ia_routing (struct ospf *ospf, OSPF_EXAMINE_SUMMARIES_ALL (area, rt, rtrs); } - for (node = listhead (ospf->areas); node; nextnode (node)) + for (node = listhead (ospf_top->areas); node; nextnode (node)) if ((area = getdata (node)) != NULL) - if (area != ospf->backbone) + if (area != ospf_top->backbone) if (ospf_area_is_transit (area) || ((area->shortcut_configured != OSPF_SHORTCUT_DISABLE) && - ((ospf->backbone == NULL) || + ((ospf_top->backbone == NULL) || ((area->shortcut_configured == OSPF_SHORTCUT_ENABLE) && area->shortcut_capability)))) OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL (area, rt, rtrs); @@ -720,7 +719,7 @@ ospf_ia_routing (struct ospf *ospf, if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_ia_routing():not ABR, considering all areas"); - for (node = listhead (ospf->areas); node; nextnode (node)) + for (node = listhead (ospf_top->areas); node; nextnode (node)) if ((area = getdata (node)) != NULL) OSPF_EXAMINE_SUMMARIES_ALL (area, rt, rtrs); } diff --git a/ospfd/ospf_ia.h b/ospfd/ospf_ia.h index 4eb3c9d8..afb2d4d5 100644 --- a/ospfd/ospf_ia.h +++ b/ospfd/ospf_ia.h @@ -36,8 +36,7 @@ ospf_examine_transit_summaries ((A), ASBR_SUMMARY_LSDB ((A)), (N), (R)); \ } -void ospf_ia_routing (struct ospf *, struct route_table *, - struct route_table *); +void ospf_ia_routing (struct route_table *, struct route_table *); int ospf_area_is_transit (struct ospf_area *); #endif /* _ZEBRA_OSPF_IA_H */ diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index a1b10c74..08bc7fbe 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -489,9 +489,9 @@ ospf_new_if_params () UNSET_IF_PARAM (oip, auth_simple); UNSET_IF_PARAM (oip, auth_crypt); UNSET_IF_PARAM (oip, auth_type); - - oip->auth_crypt = list_new (); + oip->auth_crypt = list_new (); + return oip; } @@ -625,9 +625,6 @@ ospf_if_new_hook (struct interface *ifp) SET_IF_PARAM (IF_DEF_PARAMS (ifp), auth_simple); memset (IF_DEF_PARAMS (ifp)->auth_simple, 0, OSPF_AUTH_SIMPLE_SIZE); - SET_IF_PARAM (IF_DEF_PARAMS (ifp), auth_crypt); - IF_DEF_PARAMS (ifp)->auth_crypt = list_new (); - SET_IF_PARAM (IF_DEF_PARAMS (ifp), auth_type); IF_DEF_PARAMS (ifp)->auth_type = OSPF_AUTH_NOTSET; @@ -646,6 +643,7 @@ ospf_if_delete_hook (struct interface *ifp) #endif /* HAVE_OPAQUE_LSA */ route_table_finish (IF_OIFS (ifp)); route_table_finish (IF_OIFS_PARAMS (ifp)); + ospf_del_if_params ((struct ospf_if_params *) IF_DEF_PARAMS (ifp)); XFREE (MTYPE_OSPF_IF_INFO, ifp->info); ifp->info = NULL; diff --git a/ospfd/ospf_interface.h b/ospfd/ospf_interface.h index 1dc0ce74..6dc01aea 100644 --- a/ospfd/ospf_interface.h +++ b/ospfd/ospf_interface.h @@ -190,13 +190,12 @@ struct ospf_interface u_int32_t discarded; /* discarded input count by error. */ u_int32_t state_change; /* Number of status change. */ - u_int32_t full_nbrs; + u_int full_nbrs; }; /* Prototypes. */ char *ospf_if_name (struct ospf_interface *); -struct ospf_interface *ospf_if_new (struct ospf *, struct interface *, - struct prefix *); +struct ospf_interface *ospf_if_new (); void ospf_if_cleanup (struct ospf_interface *); void ospf_if_free (struct ospf_interface *); int ospf_if_up (struct ospf_interface *); @@ -204,17 +203,13 @@ int ospf_if_down (struct ospf_interface *); int ospf_if_is_up (struct ospf_interface *); struct ospf_interface *ospf_if_lookup_by_name (char *); -struct ospf_interface *ospf_if_lookup_by_local_addr (struct ospf *, - struct interface *, - struct in_addr); -struct ospf_interface *ospf_if_lookup_by_prefix (struct ospf *, - struct prefix_ipv4 *); -struct ospf_interface *ospf_if_addr_local (struct in_addr); -struct ospf_interface *ospf_if_lookup_recv_if (struct ospf *, struct in_addr); -struct ospf_interface *ospf_if_is_configured (struct ospf *, struct in_addr *); - -struct ospf_if_params *ospf_lookup_if_params (struct interface *, - struct in_addr); +struct ospf_interface *ospf_if_lookup_by_local_addr (struct interface *, struct in_addr); +struct ospf_interface *ospf_if_lookup_by_prefix (struct prefix_ipv4 *); +struct ospf_interface *ospf_if_addr_local (struct in_addr src); +struct ospf_interface *ospf_if_lookup_recv_interface (struct in_addr src); +struct ospf_interface *ospf_if_is_configured (struct in_addr *); + +struct ospf_if_params *ospf_lookup_if_params (struct interface *, struct in_addr); struct ospf_if_params *ospf_get_if_params (struct interface *, struct in_addr); void ospf_del_if_params (struct ospf_if_params *); void ospf_free_if_params (struct interface *, struct in_addr); @@ -229,21 +224,22 @@ int ospf_if_is_enable (struct ospf_interface *); int ospf_if_get_output_cost (struct ospf_interface *); void ospf_if_recalculate_output_cost (struct interface *); -struct ospf_interface *ospf_vl_new (struct ospf *, struct ospf_vl_data *); +struct ospf_interface *ospf_vl_new (struct ospf_vl_data *); struct ospf_vl_data *ospf_vl_data_new (struct ospf_area *, struct in_addr); struct ospf_vl_data *ospf_vl_lookup (struct ospf_area *, struct in_addr); void ospf_vl_data_free (struct ospf_vl_data *); -void ospf_vl_add (struct ospf *, struct ospf_vl_data *); -void ospf_vl_delete (struct ospf *, struct ospf_vl_data *); +void ospf_vl_add (struct ospf_vl_data *); +void ospf_vl_delete (struct ospf_vl_data *); void ospf_vl_up_check (struct ospf_area *, struct in_addr, struct vertex *); -void ospf_vl_unapprove (struct ospf *); -void ospf_vl_shut_unapproved (struct ospf *); +void ospf_vl_unapprove (); +void ospf_vl_shut_unapproved (); int ospf_full_virtual_nbrs (struct ospf_area *); int ospf_vls_in_area (struct ospf_area *); struct crypt_key *ospf_crypt_key_lookup (list, u_char); struct crypt_key *ospf_crypt_key_new (); void ospf_crypt_key_add (list, struct crypt_key *); -int ospf_crypt_key_delete (list, u_char); +int ospf_crypt_key_delete (list, u_char key_id); + #endif /* _ZEBRA_OSPF_INTERFACE_H */ diff --git a/ospfd/ospf_ism.c b/ospfd/ospf_ism.c new file mode 100644 index 00000000..5f4d5461 --- /dev/null +++ b/ospfd/ospf_ism.c @@ -0,0 +1,658 @@ +/* + * OSPF version 2 Interface State Machine + * From RFC2328 [OSPF Version 2] + * Copyright (C) 1999, 2000 Toshiaki Takada + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include <zebra.h> + +#include "thread.h" +#include "linklist.h" +#include "prefix.h" +#include "if.h" +#include "table.h" +#include "log.h" + +#include "ospfd/ospfd.h" +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_ism.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_nsm.h" +#include "ospfd/ospf_network.h" +#include "ospfd/ospf_dump.h" +#include "ospfd/ospf_packet.h" +#include "ospfd/ospf_flood.h" +#include "ospfd/ospf_abr.h" + +/* elect DR and BDR. Refer to RFC2319 section 9.4 */ +struct ospf_neighbor * +ospf_dr_election_sub (list routers) +{ + listnode node; + struct ospf_neighbor *nbr, *max = NULL; + + /* Choose highest router priority. + In case of tie, choose highest Router ID. */ + for (node = listhead (routers); node; nextnode (node)) + { + nbr = getdata (node); + + if (max == NULL) + max = nbr; + else + { + if (max->priority < nbr->priority) + max = nbr; + else if (max->priority == nbr->priority) + if (IPV4_ADDR_CMP (&max->router_id, &nbr->router_id) < 0) + max = nbr; + } + } + + return max; +} + +struct ospf_neighbor * +ospf_elect_dr (struct ospf_interface *oi, list el_list) +{ + list dr_list; + listnode node; + struct ospf_neighbor *nbr, *dr = NULL, *bdr = NULL; + + dr_list = list_new (); + + /* Add neighbors to the list. */ + for (node = listhead (el_list); node; nextnode (node)) + { + nbr = getdata (node); + + /* neighbor declared to be DR. */ + if (NBR_IS_DR (nbr)) + listnode_add (dr_list, nbr); + + /* Preserve neighbor BDR. */ + if (IPV4_ADDR_SAME (&BDR (oi), &nbr->address.u.prefix4)) + bdr = nbr; + } + + /* Elect Designated Router. */ + if (listcount (dr_list) > 0) + dr = ospf_dr_election_sub (dr_list); + else + dr = bdr; + + /* Set DR to interface. */ + if (dr) + { + DR (oi) = dr->address.u.prefix4; + dr->d_router = dr->address.u.prefix4; + } + else + DR (oi).s_addr = 0; + + list_delete (dr_list); + + return dr; +} + +struct ospf_neighbor * +ospf_elect_bdr (struct ospf_interface *oi, list el_list) +{ + list bdr_list, no_dr_list; + listnode node; + struct ospf_neighbor *nbr, *bdr = NULL; + + bdr_list = list_new (); + no_dr_list = list_new (); + + /* Add neighbors to the list. */ + for (node = listhead (el_list); node; nextnode (node)) + { + nbr = getdata (node); + + /* neighbor declared to be DR. */ + if (NBR_IS_DR (nbr)) + continue; + + /* neighbor declared to be BDR. */ + if (NBR_IS_BDR (nbr)) + listnode_add (bdr_list, nbr); + + listnode_add (no_dr_list, nbr); + } + + /* Elect Backup Designated Router. */ + if (listcount (bdr_list) > 0) + bdr = ospf_dr_election_sub (bdr_list); + else + bdr = ospf_dr_election_sub (no_dr_list); + + /* Set BDR to interface. */ + if (bdr) + { + BDR (oi) = bdr->address.u.prefix4; + bdr->bd_router = bdr->address.u.prefix4; + } + else + BDR (oi).s_addr = 0; + + list_delete (bdr_list); + list_delete (no_dr_list); + + return bdr; +} + +int +ospf_ism_state (struct ospf_interface *oi) +{ + if (IPV4_ADDR_SAME (&DR (oi), &oi->address->u.prefix4)) + return ISM_DR; + else if (IPV4_ADDR_SAME (&BDR (oi), &oi->address->u.prefix4)) + return ISM_Backup; + else + return ISM_DROther; +} + +void +ospf_dr_eligible_routers (struct route_table *nbrs, list el_list) +{ + struct route_node *rn; + struct ospf_neighbor *nbr; + + for (rn = route_top (nbrs); rn; rn = route_next (rn)) + if ((nbr = rn->info) != NULL) + /* Ignore 0.0.0.0 node*/ + if (nbr->router_id.s_addr != 0) + /* Is neighbor eligible? */ + if (nbr->priority != 0) + /* Is neighbor upper 2-Way? */ + if (nbr->state >= NSM_TwoWay) + listnode_add (el_list, nbr); +} + +/* Generate AdjOK? NSM event. */ +void +ospf_dr_change (struct ospf *ospf, struct route_table *nbrs) +{ + struct route_node *rn; + struct ospf_neighbor *nbr; + + for (rn = route_top (nbrs); rn; rn = route_next (rn)) + if ((nbr = rn->info) != NULL) + /* Ignore 0.0.0.0 node*/ + if (nbr->router_id.s_addr != 0) + /* Is neighbor upper 2-Way? */ + if (nbr->state >= NSM_TwoWay) + /* Ignore myself. */ + if (!IPV4_ADDR_SAME (&nbr->router_id, &ospf->router_id)) + OSPF_NSM_EVENT_SCHEDULE (nbr, NSM_AdjOK); +} + +int +ospf_dr_election (struct ospf_interface *oi) +{ + struct in_addr old_dr, old_bdr; + int old_state, new_state; + list el_list; + struct ospf_neighbor *dr, *bdr; + + /* backup current values. */ + old_dr = DR (oi); + old_bdr = BDR (oi); + old_state = oi->state; + + el_list = list_new (); + + /* List eligible routers. */ + ospf_dr_eligible_routers (oi->nbrs, el_list); + + /* First election of DR and BDR. */ + bdr = ospf_elect_bdr (oi, el_list); + dr = ospf_elect_dr (oi, el_list); + + new_state = ospf_ism_state (oi); + + zlog_info ("DR-Election[1st]: Backup %s", inet_ntoa (BDR (oi))); + zlog_info ("DR-Election[1st]: DR %s", inet_ntoa (DR (oi))); + + if (new_state != old_state && + !(new_state == ISM_DROther && old_state < ISM_DROther)) + { + ospf_elect_bdr (oi, el_list); + ospf_elect_dr (oi, el_list); + + new_state = ospf_ism_state (oi); + + zlog_info ("DR-Election[2nd]: Backup %s", inet_ntoa (BDR (oi))); + zlog_info ("DR-Election[2nd]: DR %s", inet_ntoa (DR (oi))); + } + + list_delete (el_list); + + /* if DR or BDR changes, cause AdjOK? neighbor event. */ + if (!IPV4_ADDR_SAME (&old_dr, &DR (oi)) || + !IPV4_ADDR_SAME (&old_bdr, &BDR (oi))) + ospf_dr_change (oi->ospf, oi->nbrs); + + if (oi->type == OSPF_IFTYPE_BROADCAST || oi->type == OSPF_IFTYPE_POINTOPOINT) + { + /* Multicast group change. */ + if ((old_state != ISM_DR && old_state != ISM_Backup) && + (new_state == ISM_DR || new_state == ISM_Backup)) + ospf_if_add_alldrouters (oi->ospf, oi->address, oi->ifp->ifindex); + else if ((old_state == ISM_DR || old_state == ISM_Backup) && + (new_state != ISM_DR && new_state != ISM_Backup)) + ospf_if_drop_alldrouters (oi->ospf, oi->address, oi->ifp->ifindex); + } + + return new_state; +} + + +int +ospf_hello_timer (struct thread *thread) +{ + struct ospf_interface *oi; + + oi = THREAD_ARG (thread); + oi->t_hello = NULL; + + if (IS_DEBUG_OSPF (ism, ISM_TIMERS)) + zlog (NULL, LOG_DEBUG, "ISM[%s]: Timer (Hello timer expire)", + IF_NAME (oi)); + + /* Sending hello packet. */ + ospf_hello_send (oi); + + /* Hello timer set. */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, + OSPF_IF_PARAM (oi, v_hello)); + + return 0; +} + +int +ospf_wait_timer (struct thread *thread) +{ + struct ospf_interface *oi; + + oi = THREAD_ARG (thread); + oi->t_wait = NULL; + + if (IS_DEBUG_OSPF (ism, ISM_TIMERS)) + zlog (NULL, LOG_DEBUG, "ISM[%s]: Timer (Wait timer expire)", + IF_NAME (oi)); + + OSPF_ISM_EVENT_SCHEDULE (oi, ISM_WaitTimer); + + return 0; +} + +/* Hook function called after ospf ISM event is occured. And vty's + network command invoke this function after making interface + structure. */ +void +ism_timer_set (struct ospf_interface *oi) +{ + switch (oi->state) + { + case ISM_Down: + /* First entry point of ospf interface state machine. In this state + interface parameters must be set to initial values, and timers are + reset also. */ + OSPF_ISM_TIMER_OFF (oi->t_hello); + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_OFF (oi->t_ls_ack); + break; + case ISM_Loopback: + /* In this state, the interface may be looped back and will be + unavailable for regular data traffic. */ + OSPF_ISM_TIMER_OFF (oi->t_hello); + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_OFF (oi->t_ls_ack); + break; + case ISM_Waiting: + /* The router is trying to determine the identity of DRouter and + BDRouter. The router begin to receive and send Hello Packets. */ + /* send first hello immediately */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, 1); + OSPF_ISM_TIMER_ON (oi->t_wait, ospf_wait_timer, + OSPF_IF_PARAM (oi, v_wait)); + OSPF_ISM_TIMER_OFF (oi->t_ls_ack); + break; + case ISM_PointToPoint: + /* The interface connects to a physical Point-to-point network or + virtual link. The router attempts to form an adjacency with + neighboring router. Hello packets are also sent. */ + /* send first hello immediately */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, 1); + + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_ON (oi->t_ls_ack, ospf_ls_ack_timer, oi->v_ls_ack); + break; + case ISM_DROther: + /* The network type of the interface is broadcast or NBMA network, + and the router itself is neither Designated Router nor + Backup Designated Router. */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, + OSPF_IF_PARAM (oi, v_hello)); + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_ON (oi->t_ls_ack, ospf_ls_ack_timer, oi->v_ls_ack); + break; + case ISM_Backup: + /* The network type of the interface is broadcast os NBMA network, + and the router is Backup Designated Router. */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, + OSPF_IF_PARAM (oi, v_hello)); + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_ON (oi->t_ls_ack, ospf_ls_ack_timer, oi->v_ls_ack); + break; + case ISM_DR: + /* The network type of the interface is broadcast or NBMA network, + and the router is Designated Router. */ + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, + OSPF_IF_PARAM (oi, v_hello)); + OSPF_ISM_TIMER_OFF (oi->t_wait); + OSPF_ISM_TIMER_ON (oi->t_ls_ack, ospf_ls_ack_timer, oi->v_ls_ack); + break; + } +} + +int +ism_stop (struct ospf_interface *oi) +{ + return 0; +} + +int +ism_interface_up (struct ospf_interface *oi) +{ + int next_state = 0; + + /* if network type is point-to-point, Point-to-MultiPoint or virtual link, + the state transitions to Point-to-Point. */ + if (oi->type == OSPF_IFTYPE_POINTOPOINT || + oi->type == OSPF_IFTYPE_POINTOMULTIPOINT || + oi->type == OSPF_IFTYPE_VIRTUALLINK) + next_state = ISM_PointToPoint; + /* Else if the router is not eligible to DR, the state transitions to + DROther. */ + else if (PRIORITY (oi) == 0) /* router is eligible? */ + next_state = ISM_DROther; + else + /* Otherwise, the state transitions to Waiting. */ + next_state = ISM_Waiting; + + if (oi->type == OSPF_IFTYPE_NBMA) + ospf_nbr_nbma_if_update (oi->ospf, oi); + + /* ospf_ism_event (t); */ + return next_state; +} + +int +ism_loop_ind (struct ospf_interface *oi) +{ + int ret = 0; + + /* call ism_interface_down. */ + /* ret = ism_interface_down (oi); */ + + return ret; +} + +/* Interface down event handler. */ +int +ism_interface_down (struct ospf_interface *oi) +{ + ospf_if_cleanup (oi); + return 0; +} + + +int +ism_backup_seen (struct ospf_interface *oi) +{ + return ospf_dr_election (oi); +} + +int +ism_wait_timer (struct ospf_interface *oi) +{ + return ospf_dr_election (oi); +} + +int +ism_neighbor_change (struct ospf_interface *oi) +{ + return ospf_dr_election (oi); +} + +int +ism_ignore (struct ospf_interface *oi) +{ + if (IS_DEBUG_OSPF (ism, ISM_EVENTS)) + zlog (NULL, LOG_INFO, "ISM[%s]: ism_ignore called", IF_NAME (oi)); + + return 0; +} + +/* Interface State Machine */ +struct { + int (*func) (); + int next_state; +} ISM [OSPF_ISM_STATE_MAX][OSPF_ISM_EVENT_MAX] = +{ + { + /* DependUpon: dummy state. */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_DependUpon }, /* InterfaceUp */ + { ism_ignore, ISM_DependUpon }, /* WaitTimer */ + { ism_ignore, ISM_DependUpon }, /* BackupSeen */ + { ism_ignore, ISM_DependUpon }, /* NeighborChange */ + { ism_ignore, ISM_DependUpon }, /* LoopInd */ + { ism_ignore, ISM_DependUpon }, /* UnloopInd */ + { ism_ignore, ISM_DependUpon }, /* InterfaceDown */ + }, + { + /* Down:*/ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_interface_up, ISM_DependUpon }, /* InterfaceUp */ + { ism_ignore, ISM_Down }, /* WaitTimer */ + { ism_ignore, ISM_Down }, /* BackupSeen */ + { ism_ignore, ISM_Down }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_Down }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* Loopback: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_Loopback }, /* InterfaceUp */ + { ism_ignore, ISM_Loopback }, /* WaitTimer */ + { ism_ignore, ISM_Loopback }, /* BackupSeen */ + { ism_ignore, ISM_Loopback }, /* NeighborChange */ + { ism_ignore, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_Down }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* Waiting: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_Waiting }, /* InterfaceUp */ + { ism_wait_timer, ISM_DependUpon }, /* WaitTimer */ + { ism_backup_seen, ISM_DependUpon }, /* BackupSeen */ + { ism_ignore, ISM_Waiting }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_Waiting }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* Point-to-Point: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_PointToPoint }, /* InterfaceUp */ + { ism_ignore, ISM_PointToPoint }, /* WaitTimer */ + { ism_ignore, ISM_PointToPoint }, /* BackupSeen */ + { ism_ignore, ISM_PointToPoint }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_PointToPoint }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* DROther: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_DROther }, /* InterfaceUp */ + { ism_ignore, ISM_DROther }, /* WaitTimer */ + { ism_ignore, ISM_DROther }, /* BackupSeen */ + { ism_neighbor_change, ISM_DependUpon }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_DROther }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* Backup: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_Backup }, /* InterfaceUp */ + { ism_ignore, ISM_Backup }, /* WaitTimer */ + { ism_ignore, ISM_Backup }, /* BackupSeen */ + { ism_neighbor_change, ISM_DependUpon }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_Backup }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, + { + /* DR: */ + { ism_ignore, ISM_DependUpon }, /* NoEvent */ + { ism_ignore, ISM_DR }, /* InterfaceUp */ + { ism_ignore, ISM_DR }, /* WaitTimer */ + { ism_ignore, ISM_DR }, /* BackupSeen */ + { ism_neighbor_change, ISM_DependUpon }, /* NeighborChange */ + { ism_loop_ind, ISM_Loopback }, /* LoopInd */ + { ism_ignore, ISM_DR }, /* UnloopInd */ + { ism_interface_down, ISM_Down }, /* InterfaceDown */ + }, +}; + +static char *ospf_ism_event_str[] = +{ + "NoEvent", + "InterfaceUp", + "WaitTimer", + "BackupSeen", + "NeighborChange", + "LoopInd", + "UnLoopInd", + "InterfaceDown", +}; + +void +ism_change_state (struct ospf_interface *oi, int state) +{ + int old_state; + struct ospf_lsa *lsa; + + /* Logging change of state. */ + if (IS_DEBUG_OSPF (ism, ISM_STATUS)) + zlog (NULL, LOG_INFO, "ISM[%s]: State change %s -> %s", IF_NAME (oi), + LOOKUP (ospf_ism_state_msg, oi->state), + LOOKUP (ospf_ism_state_msg, state)); + + old_state = oi->state; + oi->state = state; + oi->state_change++; + + if (old_state == ISM_Down || state == ISM_Down) + ospf_check_abr_status (oi->ospf); + + /* Originate router-LSA. */ + if (oi->area) + { + if (state == ISM_Down) + { + if (oi->area->act_ints > 0) + oi->area->act_ints--; + } + else if (old_state == ISM_Down) + oi->area->act_ints++; + + /* schedule router-LSA originate. */ + ospf_router_lsa_timer_add (oi->area); + } + + /* Originate network-LSA. */ + if (old_state != ISM_DR && state == ISM_DR) + ospf_network_lsa_timer_add (oi); + else if (old_state == ISM_DR && state != ISM_DR) + { + /* Free self originated network LSA. */ + lsa = oi->network_lsa_self; + if (lsa) + { + ospf_lsa_flush_area (lsa, oi->area); + OSPF_TIMER_OFF (oi->t_network_lsa_self); + } + + ospf_lsa_unlock (oi->network_lsa_self); + oi->network_lsa_self = NULL; + } + +#ifdef HAVE_OPAQUE_LSA + ospf_opaque_ism_change (oi, old_state); +#endif /* HAVE_OPAQUE_LSA */ + + /* Check area border status. */ + ospf_check_abr_status (oi->ospf); +} + +/* Execute ISM event process. */ +int +ospf_ism_event (struct thread *thread) +{ + int event; + int next_state; + struct ospf_interface *oi; + + oi = THREAD_ARG (thread); + event = THREAD_VAL (thread); + + /* Call function. */ + next_state = (*(ISM [oi->state][event].func))(oi); + + if (! next_state) + next_state = ISM [oi->state][event].next_state; + + if (IS_DEBUG_OSPF (ism, ISM_EVENTS)) + zlog (NULL, LOG_INFO, "ISM[%s]: %s (%s)", IF_NAME (oi), + LOOKUP (ospf_ism_state_msg, oi->state), + ospf_ism_event_str[event]); + + /* If state is changed. */ + if (next_state != oi->state) + ism_change_state (oi, next_state); + + /* Make sure timer is set. */ + ism_timer_set (oi); + + return 0; +} + diff --git a/ospfd/ospf_ism.h b/ospfd/ospf_ism.h index 6de8b8e2..b04865af 100644 --- a/ospfd/ospf_ism.h +++ b/ospfd/ospf_ism.h @@ -46,17 +46,17 @@ #define ISM_InterfaceDown 7 #define OSPF_ISM_EVENT_MAX 8 -#define OSPF_ISM_WRITE_ON(O) \ +#define OSPF_ISM_WRITE_ON() \ do \ { \ if (oi->on_write_q == 0) \ { \ - listnode_add ((O)->oi_write_q, oi); \ + listnode_add (ospf_top->oi_write_q, oi); \ oi->on_write_q = 1; \ } \ - if ((O)->t_write == NULL) \ - (O)->t_write = \ - thread_add_write (master, ospf_write, (O), (O)->fd); \ + if (ospf_top->t_write == NULL) \ + ospf_top->t_write = \ + thread_add_write (master, ospf_write, ospf_top, ospf_top->fd); \ } while (0) /* Macro for OSPF ISM timer turn on. */ diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c index 5d5ad08a..34cbc446 100644 --- a/ospfd/ospf_lsa.c +++ b/ospfd/ospf_lsa.c @@ -615,7 +615,8 @@ lsa_link_ptomp_set (struct stream *s, struct ospf_interface *oi) link_info_set (s, id, mask, LSA_LINK_TYPE_STUB, 0, 0); links++; - zlog_info ("PointToMultipoint: running ptomultip_set"); + if (IS_DEBUG_OSPF (lsa, LSA_GENERATE)) + zlog_info ("PointToMultipoint: running ptomultip_set"); /* Search neighbor, */ for (rn = route_top (oi->nbrs); rn; rn = route_next (rn)) @@ -628,8 +629,9 @@ lsa_link_ptomp_set (struct stream *s, struct ospf_interface *oi) link_info_set (s, nbr->router_id, oi->address->u.prefix4, LSA_LINK_TYPE_POINTOPOINT, 0, oi->output_cost); links++; - zlog_info ("PointToMultipoint: set link to %s", - inet_ntoa(oi->address->u.prefix4)); + if (IS_DEBUG_OSPF (lsa, LSA_GENERATE)) + zlog_info ("PointToMultipoint: set link to %s", + inet_ntoa(oi->address->u.prefix4)); } return links; @@ -648,7 +650,7 @@ router_lsa_link_set (struct stream *s, struct ospf_area *area) struct interface *ifp = oi->ifp; /* Check interface is up, OSPF is enable. */ - if (if_is_up (ifp)) + if (if_is_operative (ifp)) { if (oi->state != ISM_Down) { @@ -1402,7 +1404,7 @@ ospf_external_lsa_nexthop_get (struct ospf *ospf, struct in_addr nexthop) { struct ospf_interface *oi = getdata (n1); - if (if_is_up (oi->ifp)) + if (if_is_operative (oi->ifp)) if (oi->address->family == AF_INET) if (prefix_match (oi->address, &nh)) return nexthop; @@ -1423,7 +1425,7 @@ ospf_get_ip_from_ifp (struct ospf_interface *oi) fwd.s_addr = 0; - if (if_is_up (oi->ifp)) + if (if_is_operative (oi->ifp)) return oi->address->u.prefix4; return fwd; @@ -1444,7 +1446,7 @@ ospf_get_nssa_ip (struct ospf_area *area) { struct ospf_interface *oi = getdata (n1); - if (if_is_up (oi->ifp)) + if (if_is_operative (oi->ifp)) if (oi->area->external_routing == OSPF_AREA_NSSA) if (oi->address && oi->address->family == AF_INET) { @@ -1454,6 +1456,8 @@ ospf_get_nssa_ip (struct ospf_area *area) return oi->address->u.prefix4; } } + if (best_default.s_addr != 0) + return best_default; if (best_default.s_addr != 0) return best_default; @@ -1632,7 +1636,6 @@ ospf_install_flood_nssa (struct ospf *ospf, /* make lsa duplicate, lock=1 */ new2 = ospf_lsa_dup (lsa); - new2->area = area; new2->data->type = OSPF_AS_NSSA_LSA; @@ -1662,13 +1665,13 @@ ospf_install_flood_nssa (struct ospf *ospf, if (extlsa->e[0].fwd_addr.s_addr == 0) extlsa->e[0].fwd_addr = ospf_get_nssa_ip(area); /* this NSSA area in ifp */ - if (IS_DEBUG_OSPF_NSSA) - if (extlsa->e[0].fwd_addr.s_addr == 0) - { - zlog_info ("LSA[Type-7]: Could not build FWD-ADDR"); - ospf_lsa_discard(new2); - return; - } + if (extlsa->e[0].fwd_addr.s_addr == 0) + { + if (IS_DEBUG_OSPF_NSSA) + zlog_info ("LSA[Type-7]: Could not build FWD-ADDR"); + ospf_lsa_discard(new2); + return; + } } /* Re-calculate checksum. */ ospf_lsa_checksum (new2->data); @@ -1857,6 +1860,39 @@ ospf_default_originate_timer (struct thread *thread) return 0; } +#ifdef HAVE_NSSA +/* Flush any NSSA LSAs for given prefix */ +void +ospf_nssa_lsa_flush (struct ospf *ospf, struct prefix_ipv4 *p) +{ + struct listnode *node; + struct ospf_lsa *lsa; + struct ospf_area *area; + + for (node = listhead (ospf->areas); node; nextnode (node)) + { + if (((area = getdata (node)) != NULL) + && (area->external_routing == OSPF_AREA_NSSA)) + { + if (!(lsa = ospf_lsa_lookup (area, OSPF_AS_NSSA_LSA, p->prefix, + ospf->router_id))) + { + if (IS_DEBUG_OSPF (lsa, LSA_FLOODING)) + zlog_warn ("LSA: There is no such AS-NSSA-LSA %s/%d in LSDB", + inet_ntoa (p->prefix), p->prefixlen); + continue; + } + ospf_ls_retransmit_delete_nbr_area (area, lsa); + if (!IS_LSA_MAXAGE (lsa)) + { + ospf_refresher_unregister_lsa (ospf, lsa); + ospf_lsa_flush_area (lsa, area); + } + } + } +} +#endif /* HAVE_NSSA */ + /* Flush an AS-external-LSA from LSDB and routing domain. */ void ospf_external_lsa_flush (struct ospf *ospf, @@ -1877,6 +1913,13 @@ ospf_external_lsa_flush (struct ospf *ospf, inet_ntoa (p->prefix), p->prefixlen); return; } +#ifdef HAVE_NSSA + /* If LSA is selforiginated and there is NSSA area, flush + * Type-7 LSA's at first. */ + + if (IS_LSA_SELF(lsa) && (ospf->anyNSSA)) + ospf_nssa_lsa_flush (ospf, p); +#endif /* HAVE_NSSA */ /* Sweep LSA from Link State Retransmit List. */ ospf_ls_retransmit_delete_nbr_as (ospf, lsa); @@ -2186,6 +2229,13 @@ ospf_external_lsa_install (struct ospf *ospf, struct ospf_lsa *new, ospf_ase_incremental_update (ospf, new); } +#ifdef HAVE_NSSA + /* There is no point to register selforiginate Type-7 LSA for + * refreshing. We rely on refreshing Type-5 LSA's */ + if (IS_LSA_SELF (new) && (new->data->type == OSPF_AS_NSSA_LSA)) + return new; +#endif /* HAVE_NSSA */ + /* Register self-originated LSA to refresh queue. */ if (IS_LSA_SELF (new)) ospf_refresher_register_lsa (ospf, new); @@ -2216,6 +2266,12 @@ ospf_discard_from_db (struct ospf *ospf, ospf_ls_retransmit_delete_nbr_as (ospf, old); ospf_ase_unregister_external_lsa (old, ospf); break; +#ifdef HAVE_NSSA + case OSPF_AS_NSSA_LSA: + ospf_ls_retransmit_delete_nbr_area (old->area, old); + ospf_ase_unregister_external_lsa (old, ospf); + break; +#endif /* HAVE_NSSA */ default: ospf_ls_retransmit_delete_nbr_area (old->area, old); break; @@ -2587,7 +2643,6 @@ ospf_lsa_maxage_walker_remover (struct ospf *ospf, struct ospf_lsa *lsa) ospf_spf_calculate_schedule (ospf); break; } - ospf_lsa_maxage (ospf, lsa); } @@ -2623,9 +2678,13 @@ ospf_lsa_maxage_walker (struct thread *thread) LSDB_LOOP (OPAQUE_LINK_LSDB (area), rn, lsa) ospf_lsa_maxage_walker_remover (ospf, lsa); #endif /* HAVE_OPAQUE_LSA */ +#ifdef HAVE_NSSA + LSDB_LOOP (NSSA_LSDB (area), rn, lsa) + ospf_lsa_maxage_walker_remover (ospf, lsa); +#endif /* HAVE_NSSA */ } - /* for AS-eternal-LSAs. */ + /* for AS-external-LSAs. */ if (ospf->lsdb) { LSDB_LOOP (EXTERNAL_LSDB (ospf), rn, lsa) @@ -2676,6 +2735,9 @@ struct ospf_lsa * ospf_lsa_lookup (struct ospf_area *area, u_int32_t type, struct in_addr id, struct in_addr adv_router) { + struct ospf *ospf = ospf_lookup(); + assert(ospf); + switch (type) { case OSPF_ROUTER_LSA: @@ -2695,7 +2757,7 @@ ospf_lsa_lookup (struct ospf_area *area, u_int32_t type, #ifdef HAVE_OPAQUE_LSA case OSPF_OPAQUE_AS_LSA: #endif /* HAVE_OPAQUE_LSA */ - return ospf_lsdb_lookup_by_id (area->ospf->lsdb, type, id, adv_router); + return ospf_lsdb_lookup_by_id (ospf->lsdb, type, id, adv_router); break; default: break; @@ -2840,7 +2902,7 @@ ospf_lsa_different (struct ospf_lsa *l1, struct ospf_lsa *l2) if (l1->data->length == 0) return 1; - assert (l1->data->length > OSPF_LSA_HEADER_SIZE); + assert ( ntohs(l1->data->length) > OSPF_LSA_HEADER_SIZE); p1 = (char *) l1->data; p2 = (char *) l2->data; @@ -3218,9 +3280,9 @@ ospf_lsa_refresh (struct ospf *ospf, struct ospf_lsa *lsa) case OSPF_OPAQUE_AS_LSA: ospf_opaque_lsa_refresh (lsa); break; +#endif /* HAVE_OPAQUE_LSA */ default: break; -#endif /* HAVE_OPAQUE_LSA */ } } @@ -3260,6 +3322,8 @@ ospf_refresher_register_lsa (struct ospf *ospf, struct ospf_lsa *lsa) ospf->lsa_refresh_queue.qs[index] = list_new (); listnode_add (ospf->lsa_refresh_queue.qs[index], ospf_lsa_lock (lsa)); lsa->refresh_list = index; + if (IS_DEBUG_OSPF (lsa, LSA_REFRESH)) + zlog_info ("LSA[Refresh]: ospf_refresher_register_lsa(): setting refresh_list on lsa %p (slod %d)", lsa, index); } } @@ -3324,7 +3388,7 @@ ospf_lsa_refresh_walker (struct thread *t) next = node->next; if (IS_DEBUG_OSPF (lsa, LSA_REFRESH)) - zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): refresh lsa %p", lsa); + zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): refresh lsa %p (slot %d)", lsa, i); list_delete_node (refresh_list, node); ospf_lsa_unlock (lsa); diff --git a/ospfd/ospf_lsa.h b/ospfd/ospf_lsa.h index 3271409f..b12feebc 100644 --- a/ospfd/ospf_lsa.h +++ b/ospfd/ospf_lsa.h @@ -266,6 +266,7 @@ struct ospf_lsa *ospf_summary_asbr_lsa_refresh (struct ospf *, struct ospf_lsa * struct ospf_lsa *ospf_lsa_install (struct ospf *, struct ospf_interface *, struct ospf_lsa *); +void ospf_nssa_lsa_flush (struct ospf *ospf, struct prefix_ipv4 *p); void ospf_external_lsa_flush (struct ospf *, u_char, struct prefix_ipv4 *, unsigned int, struct in_addr); @@ -319,4 +320,8 @@ int metric_value (struct ospf *, u_char); struct in_addr ospf_get_nssa_ip (struct ospf_area *); #endif /* HAVE NSSA */ +#ifdef HAVE_NSSA +struct in_addr ospf_get_nssa_ip (struct ospf_area *); +#endif + #endif /* _ZEBRA_OSPF_LSA_H */ diff --git a/ospfd/ospf_lsdb.c b/ospfd/ospf_lsdb.c index 71a98ddc..46d8d705 100644 --- a/ospfd/ospf_lsdb.c +++ b/ospfd/ospf_lsdb.c @@ -282,3 +282,18 @@ ospf_lsdb_isempty (struct ospf_lsdb *lsdb) { return (lsdb->total == 0); } + +struct ospf_lsa * +foreach_lsa (struct route_table *table, void *p_arg, int int_arg, + int (*callback) (struct ospf_lsa *, void *, int)) +{ + struct route_node *rn; + struct ospf_lsa *lsa; + + for (rn = route_top (table); rn; rn = route_next (rn)) + if ((lsa = rn->info) != NULL) + if (callback (lsa, p_arg, int_arg)) + return lsa; + + return NULL; +} diff --git a/ospfd/ospf_lsdb.h b/ospfd/ospf_lsdb.h index 302dddea..34344b3b 100644 --- a/ospfd/ospf_lsdb.h +++ b/ospfd/ospf_lsdb.h @@ -42,9 +42,8 @@ struct ospf_lsdb }; /* Macros. */ -#define LSDB_LOOP(T,N,L) \ - if ((T) != NULL) \ - for ((N) = route_top ((T)); ((N)); ((N)) = route_next ((N))) \ +#define LSDB_LOOP(T,N,L) \ + for ((N) = route_top ((T)); ((N)); ((N)) = route_next ((N))) \ if (((L) = (N)->info)) #define ROUTER_LSDB(A) ((A)->lsdb->type[OSPF_ROUTER_LSA].db) @@ -78,5 +77,7 @@ unsigned long ospf_lsdb_count_all (struct ospf_lsdb *); unsigned long ospf_lsdb_count (struct ospf_lsdb *, int); unsigned long ospf_lsdb_count_self (struct ospf_lsdb *, int); unsigned long ospf_lsdb_isempty (struct ospf_lsdb *); +struct ospf_lsa *foreach_lsa (struct route_table *, void *, int, + int (*callback) (struct ospf_lsa *, void *, int)); #endif /* _ZEBRA_OSPF_LSDB_H */ diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c index b1d1fd4c..0ac82a68 100644 --- a/ospfd/ospf_main.c +++ b/ospfd/ospf_main.c @@ -36,8 +36,6 @@ #include "stream.h" #include "log.h" #include "memory.h" -#include "privs.h" -#include "debug.h" #include "ospfd/ospfd.h" #include "ospfd/ospf_interface.h" @@ -49,29 +47,6 @@ #include "ospfd/ospf_zebra.h" #include "ospfd/ospf_vty.h" -/* ospfd privileges */ -zebra_capabilities_t _caps_p [] = -{ - ZCAP_RAW, - ZCAP_BIND, - ZCAP_BROADCAST, - ZCAP_ADMIN, -}; - -struct zebra_privs_t ospfd_privs = -{ -#if defined(ZEBRA_USER) && defined(ZEBRA_GROUP) - .user = ZEBRA_USER, - .group = ZEBRA_GROUP, -#endif -#if defined(VTY_GROUP) - .vty_group = VTY_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]), - .cap_num_i = 0 -}; - /* Configuration filename and directory. */ char config_current[] = OSPF_DEFAULT_CONFIG; char config_default[] = SYSCONFDIR OSPF_DEFAULT_CONFIG; @@ -86,7 +61,6 @@ struct option longopts[] = { "help", no_argument, NULL, 'h'}, { "vty_addr", required_argument, NULL, 'A'}, { "vty_port", required_argument, NULL, 'P'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { 0 } }; @@ -114,7 +88,6 @@ Daemon which manages OSPF.\n\n\ -i, --pid_file Set process identifier file name\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -189,11 +162,6 @@ signal_init () signal_set (SIGTTOU, SIG_IGN); #endif signal_set (SIGUSR1, sigusr1); -#ifdef HAVE_GLIBC_BACKTRACE - signal_set (SIGBUS, debug_print_trace); - signal_set (SIGSEGV, debug_print_trace); - signal_set (SIGILL, debug_print_trace); -#endif /* HAVE_GLIBC_BACKTRACE */ } /* OSPFd main routine. */ @@ -232,7 +200,7 @@ main (int argc, char **argv) { int opt; - opt = getopt_long (argc, argv, "dlf:hA:P:u:v", longopts, 0); + opt = getopt_long (argc, argv, "dlf:hA:P:v", longopts, 0); if (opt == EOF) break; @@ -264,9 +232,6 @@ main (int argc, char **argv) vty_port = atoi (optarg); vty_port = (vty_port ? vty_port : OSPF_VTY_PORT); break; - case 'u': - ospfd_privs.group = ospfd_privs.user = optarg; - break; case 'v': print_version (progname); exit (0); @@ -284,7 +249,6 @@ main (int argc, char **argv) master = om->master; /* Library inits. */ - zprivs_init (&ospfd_privs); signal_init (); cmd_init (1); debug_init (); diff --git a/ospfd/ospf_neighbor.c b/ospfd/ospf_neighbor.c new file mode 100644 index 00000000..ccef0559 --- /dev/null +++ b/ospfd/ospf_neighbor.c @@ -0,0 +1,319 @@ +/* + * OSPF Neighbor functions. + * Copyright (C) 1999, 2000 Toshiaki Takada + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <zebra.h> + +#include "linklist.h" +#include "prefix.h" +#include "memory.h" +#include "command.h" +#include "thread.h" +#include "stream.h" +#include "table.h" +#include "log.h" + +#include "ospfd/ospfd.h" +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_nsm.h" +#include "ospfd/ospf_packet.h" +#include "ospfd/ospf_network.h" +#include "ospfd/ospf_flood.h" +#include "ospfd/ospf_dump.h" + +struct ospf_neighbor * +ospf_nbr_new (struct ospf_interface *oi) +{ + struct ospf_neighbor *nbr; + + /* Allcate new neighbor. */ + nbr = XMALLOC (MTYPE_OSPF_NEIGHBOR, sizeof (struct ospf_neighbor)); + memset (nbr, 0, sizeof (struct ospf_neighbor)); + + /* Relate neighbor to the interface. */ + nbr->oi = oi; + + /* Set default values. */ + nbr->state = NSM_Down; + + /* Set inheritance values. */ + nbr->v_inactivity = OSPF_IF_PARAM (oi, v_wait); + nbr->v_db_desc = OSPF_IF_PARAM (oi, retransmit_interval); + nbr->v_ls_req = OSPF_IF_PARAM (oi, retransmit_interval); + nbr->v_ls_upd = OSPF_IF_PARAM (oi, retransmit_interval); + nbr->priority = -1; + + /* DD flags. */ + nbr->dd_flags = OSPF_DD_FLAG_MS|OSPF_DD_FLAG_M|OSPF_DD_FLAG_I; + + /* Last received and sent DD. */ + nbr->last_send = NULL; + + nbr->nbr_nbma = NULL; + + ospf_lsdb_init (&nbr->db_sum); + ospf_lsdb_init (&nbr->ls_rxmt); + ospf_lsdb_init (&nbr->ls_req); + + nbr->crypt_seqnum = 0; + + return nbr; +} + +void +ospf_nbr_free (struct ospf_neighbor *nbr) +{ + /* Free DB summary list. */ + if (ospf_db_summary_count (nbr)) + ospf_db_summary_clear (nbr); + /* ospf_db_summary_delete_all (nbr); */ + + /* Free ls request list. */ + if (ospf_ls_request_count (nbr)) + ospf_ls_request_delete_all (nbr); + + /* Free retransmit list. */ + if (ospf_ls_retransmit_count (nbr)) + ospf_ls_retransmit_clear (nbr); + + /* Cleanup LSDBs. */ + ospf_lsdb_cleanup (&nbr->db_sum); + ospf_lsdb_cleanup (&nbr->ls_req); + ospf_lsdb_cleanup (&nbr->ls_rxmt); + + /* Clear last send packet. */ + if (nbr->last_send) + ospf_packet_free (nbr->last_send); + + if (nbr->nbr_nbma) + { + nbr->nbr_nbma->nbr = NULL; + nbr->nbr_nbma = NULL; + } + + /* Cancel all timers. */ + OSPF_NSM_TIMER_OFF (nbr->t_inactivity); + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_req); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + + /* Cancel all events. *//* Thread lookup cost would be negligible. */ + thread_cancel_event (master, nbr); + + XFREE (MTYPE_OSPF_NEIGHBOR, nbr); +} + +/* Delete specified OSPF neighbor from interface. */ +void +ospf_nbr_delete (struct ospf_neighbor *nbr) +{ + struct ospf_interface *oi; + struct route_node *rn; + struct prefix p; + + oi = nbr->oi; + + /* Unlink ospf neighbor from the interface. */ + p.family = AF_INET; + p.prefixlen = IPV4_MAX_BITLEN; + p.u.prefix4 = nbr->src; + + rn = route_node_lookup (oi->nbrs, &p); + if (rn) + { + if (rn->info) + { + rn->info = NULL; + route_unlock_node (rn); + } + else + zlog_info ("Can't find neighbor %s in the interface %s", + inet_ntoa (nbr->src), IF_NAME (oi)); + + route_unlock_node (rn); + } + + /* Free ospf_neighbor structure. */ + ospf_nbr_free (nbr); +} + +/* Check myself is in the neighbor list. */ +int +ospf_nbr_bidirectional (struct in_addr *router_id, + struct in_addr *neighbors, int size) +{ + int i; + int max; + + max = size / sizeof (struct in_addr); + + for (i = 0; i < max; i ++) + if (IPV4_ADDR_SAME (router_id, &neighbors[i])) + return 1; + + return 0; +} + +/* Add self to nbr list. */ +void +ospf_nbr_add_self (struct ospf_interface *oi) +{ + struct ospf_neighbor *nbr; + struct prefix p; + struct route_node *rn; + + p.family = AF_INET; + p.prefixlen = 32; + p.u.prefix4 = oi->address->u.prefix4; + + rn = route_node_get (oi->nbrs, &p); + if (rn->info) + { + /* There is already pseudo neighbor. */ + nbr = rn->info; + route_unlock_node (rn); + } + else + rn->info = oi->nbr_self; +} + +/* Get neighbor count by status. + Specify status = 0, get all neighbor other than myself. */ +int +ospf_nbr_count (struct ospf_interface *oi, int state) +{ + struct ospf_neighbor *nbr; + struct route_node *rn; + int count = 0; + + for (rn = route_top (oi->nbrs); rn; rn = route_next (rn)) + if ((nbr = rn->info)) + if (!IPV4_ADDR_SAME (&nbr->router_id, &oi->ospf->router_id)) + if (state == 0 || nbr->state == state) + count++; + + return count; +} + +#ifdef HAVE_OPAQUE_LSA +int +ospf_nbr_count_opaque_capable (struct ospf_interface *oi) +{ + struct ospf_neighbor *nbr; + struct route_node *rn; + int count = 0; + + for (rn = route_top (oi->nbrs); rn; rn = route_next (rn)) + if ((nbr = rn->info)) + if (!IPV4_ADDR_SAME (&nbr->router_id, &oi->ospf->router_id)) + if (nbr->state == NSM_Full) + if (CHECK_FLAG (nbr->options, OSPF_OPTION_O)) + count++; + + return count; +} +#endif /* HAVE_OPAQUE_LSA */ + +struct ospf_neighbor * +ospf_nbr_lookup_by_addr (struct route_table *nbrs, + struct in_addr *addr) +{ + struct prefix p; + struct route_node *rn; + struct ospf_neighbor *nbr; + + p.family = AF_INET; + p.prefixlen = IPV4_MAX_BITLEN; + p.u.prefix4 = *addr; + + rn = route_node_lookup (nbrs, &p); + if (! rn) + return NULL; + + if (rn->info == NULL) + { + route_unlock_node (rn); + return NULL; + } + + nbr = (struct ospf_neighbor *) rn->info; + route_unlock_node (rn); + + return nbr; +} + +struct ospf_neighbor * +ospf_nbr_lookup_by_routerid (struct route_table *nbrs, + struct in_addr *id) +{ + struct route_node *rn; + struct ospf_neighbor *nbr; + + for (rn = route_top (nbrs); rn; rn = route_next (rn)) + if ((nbr = rn->info) != NULL) + if (IPV4_ADDR_SAME (&nbr->router_id, id)) + { + route_unlock_node(rn); + return nbr; + } + + return NULL; +} + +void +ospf_renegotiate_optional_capabilities (struct ospf *top) +{ + listnode node; + struct ospf_interface *oi; + struct route_table *nbrs; + struct route_node *rn; + struct ospf_neighbor *nbr; + + /* At first, flush self-originated LSAs from routing domain. */ + ospf_flush_self_originated_lsas_now (top); + + /* Revert all neighbor status to ExStart. */ + for (node = listhead (top->oiflist); node; nextnode (node)) + { + if ((oi = getdata (node)) == NULL || (nbrs = oi->nbrs) == NULL) + continue; + + for (rn = route_top (nbrs); rn; rn = route_next (rn)) + { + if ((nbr = rn->info) == NULL || nbr == oi->nbr_self) + continue; + + if (nbr->state < NSM_ExStart) + continue; + + if (IS_DEBUG_OSPF_EVENT) + zlog_info ("Renegotiate optional capabilities with neighbor(%s)", inet_ntoa (nbr->router_id)); + + OSPF_NSM_EVENT_SCHEDULE (nbr, NSM_SeqNumberMismatch); + } + } + + return; +} diff --git a/ospfd/ospf_neighbor.h b/ospfd/ospf_neighbor.h index 485b548b..f7b18742 100644 --- a/ospfd/ospf_neighbor.h +++ b/ospfd/ospf_neighbor.h @@ -93,9 +93,9 @@ void ospf_nbr_free (struct ospf_neighbor *); void ospf_nbr_delete (struct ospf_neighbor *); int ospf_nbr_bidirectional (struct in_addr *, struct in_addr *, int); void ospf_nbr_add_self (struct ospf_interface *); -int ospf_nbr_count (struct ospf_interface *, int); +int ospf_nbr_count (struct route_table *, int); #ifdef HAVE_OPAQUE_LSA -int ospf_nbr_count_opaque_capable (struct ospf_interface *); +int ospf_opaque_capable_nbr_count (struct route_table *nbrs, int status); #endif /* HAVE_OPAQUE_LSA */ struct ospf_neighbor *ospf_nbr_lookup_by_addr (struct route_table *, struct in_addr *); diff --git a/ospfd/ospf_network.c b/ospfd/ospf_network.c index 87aec1e5..56ec8647 100644 --- a/ospfd/ospf_network.c +++ b/ospfd/ospf_network.c @@ -29,9 +29,6 @@ #include "sockunion.h" #include "log.h" #include "sockopt.h" -#include "privs.h" - -extern struct zebra_privs_t ospfd_privs; #include "ospfd/ospfd.h" #include "ospfd/ospf_network.h" @@ -42,8 +39,6 @@ extern struct zebra_privs_t ospfd_privs; #include "ospfd/ospf_neighbor.h" #include "ospfd/ospf_packet.h" - - /* Join to the OSPF ALL SPF ROUTERS multicast group. */ int ospf_if_add_allspfrouters (struct ospf *top, struct prefix *p, @@ -156,20 +151,12 @@ ospf_sock_init (void) int ospf_sock; int ret, tos, hincl = 1; - if ( ospfd_privs.change (ZPRIVS_RAISE) ) - zlog_err ("ospf_sock_init: could not raise privs, %s", - strerror (errno) ); - ospf_sock = socket (AF_INET, SOCK_RAW, IPPROTO_OSPFIGP); if (ospf_sock < 0) { - if ( ospfd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); zlog_warn ("ospf_read_sock_init: socket: %s", strerror (errno)); return -1; } - /* Set precedence field. */ #ifdef IPTOS_PREC_INTERNETCONTROL @@ -178,9 +165,6 @@ ospf_sock_init (void) (char *) &tos, sizeof (int)); if (ret < 0) { - if ( ospfd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); zlog_warn ("can't set sockopt IP_TOS %d to socket %d", tos, ospf_sock); close (ospf_sock); /* Prevent sd leak. */ return ret; @@ -190,40 +174,19 @@ ospf_sock_init (void) /* we will include IP header with packet */ ret = setsockopt (ospf_sock, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof (hincl)); if (ret < 0) - { - if ( ospfd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); - zlog_warn ("Can't set IP_HDRINCL option"); - } + zlog_warn ("Can't set IP_HDRINCL option"); #if defined (IP_PKTINFO) ret = setsockopt (ospf_sock, IPPROTO_IP, IP_PKTINFO, &hincl, sizeof (hincl)); if (ret < 0) - { - if ( ospfd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); - zlog_warn ("Can't set IP_PKTINFO option"); - } + zlog_warn ("Can't set IP_PKTINFO option"); #elif defined (IP_RECVIF) ret = setsockopt (ospf_sock, IPPROTO_IP, IP_RECVIF, &hincl, sizeof (hincl)); if (ret < 0) - { - if ( ospfd_privs.change (ZPRIVS_LOWER) ) - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); - zlog_warn ("Can't set IP_RECVIF option"); - } + zlog_warn ("Can't set IP_RECVIF option"); #else #warning "cannot be able to receive link information on this OS" #endif - - if (ospfd_privs.change (ZPRIVS_LOWER)) - { - zlog_err ("ospf_sock_init: could not lower privs, %s", - strerror (errno) ); - } return ospf_sock; } diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c new file mode 100644 index 00000000..a8efdcc1 --- /dev/null +++ b/ospfd/ospf_nsm.c @@ -0,0 +1,877 @@ +/* + * OSPF version 2 Neighbor State Machine + * From RFC2328 [OSPF Version 2] + * Copyright (C) 1999, 2000 Toshiaki Takada + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include <zebra.h> + +#include "thread.h" +#include "memory.h" +#include "hash.h" +#include "linklist.h" +#include "prefix.h" +#include "if.h" +#include "table.h" +#include "stream.h" +#include "table.h" +#include "log.h" + +#include "ospfd/ospfd.h" +#include "ospfd/ospf_interface.h" +#include "ospfd/ospf_ism.h" +#include "ospfd/ospf_asbr.h" +#include "ospfd/ospf_lsa.h" +#include "ospfd/ospf_lsdb.h" +#include "ospfd/ospf_neighbor.h" +#include "ospfd/ospf_nsm.h" +#include "ospfd/ospf_network.h" +#include "ospfd/ospf_packet.h" +#include "ospfd/ospf_dump.h" +#include "ospfd/ospf_flood.h" +#include "ospfd/ospf_abr.h" + +void nsm_reset_nbr (struct ospf_neighbor *); + + +/* OSPF NSM Timer functions. */ +int +ospf_inactivity_timer (struct thread *thread) +{ + struct ospf_neighbor *nbr; + + nbr = THREAD_ARG (thread); + nbr->t_inactivity = NULL; + + if (IS_DEBUG_OSPF (nsm, NSM_TIMERS)) + zlog (NULL, LOG_DEBUG, "NSM[%s:%s]: Timer (Inactivity timer expire)", + IF_NAME (nbr->oi), inet_ntoa (nbr->router_id)); + + OSPF_NSM_EVENT_SCHEDULE (nbr, NSM_InactivityTimer); + + return 0; +} + +int +ospf_db_desc_timer (struct thread *thread) +{ + struct ospf_interface *oi; + struct ospf_neighbor *nbr; + + nbr = THREAD_ARG (thread); + nbr->t_db_desc = NULL; + + oi = nbr->oi; + + if (IS_DEBUG_OSPF (nsm, NSM_TIMERS)) + zlog (NULL, LOG_INFO, "NSM[%s:%s]: Timer (DD Retransmit timer expire)", + IF_NAME (nbr->oi), inet_ntoa (nbr->src)); + + /* resent last send DD packet. */ + assert (nbr->last_send); + ospf_db_desc_resend (nbr); + + /* DD Retransmit timer set. */ + OSPF_NSM_TIMER_ON (nbr->t_db_desc, ospf_db_desc_timer, nbr->v_db_desc); + + return 0; +} + +/* Hook function called after ospf NSM event is occured. */ + +void +nsm_timer_set (struct ospf_neighbor *nbr) +{ + switch (nbr->state) + { + case NSM_Down: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + break; + case NSM_Attempt: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + break; + case NSM_Init: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + break; + case NSM_TwoWay: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + break; + case NSM_ExStart: + OSPF_NSM_TIMER_ON (nbr->t_db_desc, ospf_db_desc_timer, nbr->v_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + break; + case NSM_Exchange: + OSPF_NSM_TIMER_ON (nbr->t_ls_upd, ospf_ls_upd_timer, nbr->v_ls_upd); + if (!IS_SET_DD_MS (nbr->dd_flags)) + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + break; + case NSM_Loading: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + break; + case NSM_Full: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + break; + default: + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + break; + } +} + + +/* OSPF NSM functions. */ +int +nsm_ignore (struct ospf_neighbor *nbr) +{ + if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) + zlog (NULL, LOG_INFO, "NSM[%s:%s]: nsm_ignore called", + IF_NAME (nbr->oi), inet_ntoa (nbr->router_id)); + + return 0; +} + +int +nsm_hello_received (struct ospf_neighbor *nbr) +{ + /* Start or Restart Inactivity Timer. */ + OSPF_NSM_TIMER_OFF (nbr->t_inactivity); + + OSPF_NSM_TIMER_ON (nbr->t_inactivity, ospf_inactivity_timer, + nbr->v_inactivity); + + if (nbr->oi->type == OSPF_IFTYPE_NBMA && nbr->nbr_nbma) + OSPF_POLL_TIMER_OFF (nbr->nbr_nbma->t_poll); + + return 0; +} + +int +nsm_start (struct ospf_neighbor *nbr) +{ + + nsm_reset_nbr (nbr); + + if (nbr->nbr_nbma) + OSPF_POLL_TIMER_OFF (nbr->nbr_nbma->t_poll); + + OSPF_NSM_TIMER_OFF (nbr->t_inactivity); + + OSPF_NSM_TIMER_ON (nbr->t_inactivity, ospf_inactivity_timer, + nbr->v_inactivity); + + return 0; +} + +int +nsm_twoway_received (struct ospf_neighbor *nbr) +{ + struct ospf_interface *oi; + int next_state = NSM_TwoWay; + + oi = nbr->oi; + + /* These netowork types must be adjacency. */ + if (oi->type == OSPF_IFTYPE_POINTOPOINT || + oi->type == OSPF_IFTYPE_POINTOMULTIPOINT || + oi->type == OSPF_IFTYPE_VIRTUALLINK) + next_state = NSM_ExStart; + + /* Router itself is the DRouter or the BDRouter. */ + if (IPV4_ADDR_SAME (&oi->address->u.prefix4, &DR (oi)) || + IPV4_ADDR_SAME (&oi->address->u.prefix4, &BDR (oi))) + next_state = NSM_ExStart; + + /* Neighboring Router is the DRouter or the BDRouter. */ + if (IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->d_router) || + IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->bd_router)) + next_state = NSM_ExStart; + + return next_state; +} + +int +ospf_db_summary_count (struct ospf_neighbor *nbr) +{ + return ospf_lsdb_count_all (&nbr->db_sum); +} + +int +ospf_db_summary_isempty (struct ospf_neighbor *nbr) +{ + return ospf_lsdb_isempty (&nbr->db_sum); +} + +int +ospf_db_summary_add (struct ospf_neighbor *nbr, struct ospf_lsa *lsa) +{ +#ifdef HAVE_OPAQUE_LSA + switch (lsa->data->type) + { + case OSPF_OPAQUE_LINK_LSA: + /* Exclude type-9 LSAs that does not have the same "oi" with "nbr". */ + if (lsa->oi != nbr->oi) + return 0; + break; + case OSPF_OPAQUE_AREA_LSA: + /* + * It is assured by the caller function "nsm_negotiation_done()" + * that every given LSA belongs to the same area with "nbr". + */ + break; + case OSPF_OPAQUE_AS_LSA: + default: + break; + } +#endif /* HAVE_OPAQUE_LSA */ + +#ifdef HAVE_NSSA + /* Stay away from any Local Translated Type-7 LSAs */ + if (CHECK_FLAG (lsa->flags, OSPF_LSA_LOCAL_XLT)) + return 0; +#endif /* HAVE_NSSA */ + + if (IS_LSA_MAXAGE (lsa)) + ospf_ls_retransmit_add (nbr, lsa); + else + ospf_lsdb_add (&nbr->db_sum, lsa); + + return 0; +} + +void +ospf_db_summary_clear (struct ospf_neighbor *nbr) +{ + struct ospf_lsdb *lsdb; + int i; + + lsdb = &nbr->db_sum; + for (i = OSPF_MIN_LSA; i < OSPF_MAX_LSA; i++) + { + struct route_table *table = lsdb->type[i].db; + struct route_node *rn; + + for (rn = route_top (table); rn; rn = route_next (rn)) + if (rn->info) + ospf_lsdb_delete (&nbr->db_sum, rn->info); + } +} + + + +/* The area link state database consists of the router-LSAs, + network-LSAs and summary-LSAs contained in the area structure, + along with the AS-external-LSAs contained in the global structure. + AS-external-LSAs are omitted from a virtual neighbor's Database + summary list. AS-external-LSAs are omitted from the Database + summary list if the area has been configured as a stub. */ +int +nsm_negotiation_done (struct ospf_neighbor *nbr) +{ + struct ospf_area *area = nbr->oi->area; + struct ospf_lsa *lsa; + struct route_node *rn; + + LSDB_LOOP (ROUTER_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + LSDB_LOOP (NETWORK_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + LSDB_LOOP (SUMMARY_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + LSDB_LOOP (ASBR_SUMMARY_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + +#ifdef HAVE_OPAQUE_LSA + /* Process only if the neighbor is opaque capable. */ + if (CHECK_FLAG (nbr->options, OSPF_OPTION_O)) + { + LSDB_LOOP (OPAQUE_LINK_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + LSDB_LOOP (OPAQUE_AREA_LSDB (area), rn, lsa) + ospf_db_summary_add (nbr, lsa); + } +#endif /* HAVE_OPAQUE_LSA */ + + if (nbr->oi->type != OSPF_IFTYPE_VIRTUALLINK + && area->external_routing == OSPF_AREA_DEFAULT) + LSDB_LOOP (EXTERNAL_LSDB (nbr->oi->ospf), rn, lsa) + ospf_db_summary_add (nbr, lsa); + +#ifdef HAVE_OPAQUE_LSA + if (CHECK_FLAG (nbr->options, OSPF_OPTION_O) + && (nbr->oi->type != OSPF_IFTYPE_VIRTUALLINK + && area->external_routing == OSPF_AREA_DEFAULT)) + LSDB_LOOP (OPAQUE_AS_LSDB (nbr->oi->ospf), rn, lsa) + ospf_db_summary_add (nbr, lsa); +#endif /* HAVE_OPAQUE_LSA */ + + return 0; +} + +int +nsm_exchange_done (struct ospf_neighbor *nbr) +{ + if (ospf_ls_request_isempty (nbr)) + return NSM_Full; + + /* Cancel dd retransmit timer. */ + /* OSPF_NSM_TIMER_OFF (nbr->t_db_desc); */ + + /* Send Link State Request. */ + ospf_ls_req_send (nbr); + + return NSM_Loading; +} + +int +nsm_bad_ls_req (struct ospf_neighbor *nbr) +{ + /* Clear neighbor. */ + nsm_reset_nbr (nbr); + + return 0; +} + +int +nsm_adj_ok (struct ospf_neighbor *nbr) +{ + struct ospf_interface *oi; + int next_state; + int flag = 0; + + oi = nbr->oi; + next_state = nbr->state; + + /* These netowork types must be adjacency. */ + if (oi->type == OSPF_IFTYPE_POINTOPOINT + || oi->type == OSPF_IFTYPE_POINTOMULTIPOINT + || oi->type == OSPF_IFTYPE_VIRTUALLINK) + flag = 1; + + /* Router itself is the DRouter or the BDRouter. */ + if (IPV4_ADDR_SAME (&oi->address->u.prefix4, &DR (oi)) + || IPV4_ADDR_SAME (&oi->address->u.prefix4, &BDR (oi))) + flag = 1; + + if (IPV4_ADDR_SAME (&nbr->address.u.prefix4, &DR (oi)) + || IPV4_ADDR_SAME (&nbr->address.u.prefix4, &BDR (oi))) + flag = 1; + + if (nbr->state == NSM_TwoWay && flag == 1) + next_state = NSM_ExStart; + else if (nbr->state >= NSM_ExStart && flag == 0) + next_state = NSM_TwoWay; + + return next_state; +} + +int +nsm_seq_number_mismatch (struct ospf_neighbor *nbr) +{ + /* Clear neighbor. */ + nsm_reset_nbr (nbr); + + return 0; +} + +int +nsm_oneway_received (struct ospf_neighbor *nbr) +{ + /* Clear neighbor. */ + nsm_reset_nbr (nbr); + + return 0; +} + +void +nsm_reset_nbr (struct ospf_neighbor *nbr) +{ + /* Clear Database Summary list. */ + if (!ospf_db_summary_isempty (nbr)) + ospf_db_summary_clear (nbr); + + /* Clear Link State Request list. */ + if (!ospf_ls_request_isempty (nbr)) + ospf_ls_request_delete_all (nbr); + + /* Clear Link State Retransmission list. */ + if (!ospf_ls_retransmit_isempty (nbr)) + ospf_ls_retransmit_clear (nbr); + + /* Cancel thread. */ + OSPF_NSM_TIMER_OFF (nbr->t_db_desc); + OSPF_NSM_TIMER_OFF (nbr->t_ls_req); + OSPF_NSM_TIMER_OFF (nbr->t_ls_upd); + OSPF_NSM_TIMER_OFF (nbr->t_hello_reply); + +#ifdef HAVE_OPAQUE_LSA + if (CHECK_FLAG (nbr->options, OSPF_OPTION_O)) + UNSET_FLAG (nbr->options, OSPF_OPTION_O); +#endif /* HAVE_OPAQUE_LSA */ +} + +int +nsm_kill_nbr (struct ospf_neighbor *nbr) +{ + /* call it here because we cannot call it from ospf_nsm_event */ + nsm_change_state (nbr, NSM_Down); + + /* Reset neighbor. */ + nsm_reset_nbr (nbr); + + if (nbr->oi->type == OSPF_IFTYPE_NBMA && nbr->nbr_nbma != NULL) + { + struct ospf_nbr_nbma *nbr_nbma = nbr->nbr_nbma; + + nbr_nbma->nbr = NULL; + nbr_nbma->state_change = nbr->state_change; + + nbr->nbr_nbma = NULL; + + OSPF_POLL_TIMER_ON (nbr_nbma->t_poll, ospf_poll_timer, + nbr_nbma->v_poll); + + if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) + zlog_info ("NSM[%s:%s]: Down (PollIntervalTimer scheduled)", + IF_NAME (nbr->oi), inet_ntoa (nbr->address.u.prefix4)); + } + + /* Delete neighbor from interface. */ + ospf_nbr_delete (nbr); + + return 0; +} + +int +nsm_inactivity_timer (struct ospf_neighbor *nbr) +{ + /* Kill neighbor. */ + nsm_kill_nbr (nbr); + + return 0; +} + +int +nsm_ll_down (struct ospf_neighbor *nbr) +{ + /* Reset neighbor. */ + /*nsm_reset_nbr (nbr);*/ + + /* Kill neighbor. */ + nsm_kill_nbr (nbr); + + return 0; +} + +/* Neighbor State Machine */ +struct { + int (*func) (); + int next_state; +} NSM [OSPF_NSM_STATE_MAX][OSPF_NSM_EVENT_MAX] = +{ + { + /* DependUpon: dummy state. */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_ignore, NSM_DependUpon }, /* HelloReceived */ + { nsm_ignore, NSM_DependUpon }, /* Start */ + { nsm_ignore, NSM_DependUpon }, /* 2-WayReceived */ + { nsm_ignore, NSM_DependUpon }, /* NegotiationDone */ + { nsm_ignore, NSM_DependUpon }, /* ExchangeDone */ + { nsm_ignore, NSM_DependUpon }, /* BadLSReq */ + { nsm_ignore, NSM_DependUpon }, /* LoadingDone */ + { nsm_ignore, NSM_DependUpon }, /* AdjOK? */ + { nsm_ignore, NSM_DependUpon }, /* SeqNumberMismatch */ + { nsm_ignore, NSM_DependUpon }, /* 1-WayReceived */ + { nsm_ignore, NSM_DependUpon }, /* KillNbr */ + { nsm_ignore, NSM_DependUpon }, /* InactivityTimer */ + { nsm_ignore, NSM_DependUpon }, /* LLDown */ + }, + { + /* Down: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Init }, /* HelloReceived */ + { nsm_start, NSM_Attempt }, /* Start */ + { nsm_ignore, NSM_Down }, /* 2-WayReceived */ + { nsm_ignore, NSM_Down }, /* NegotiationDone */ + { nsm_ignore, NSM_Down }, /* ExchangeDone */ + { nsm_ignore, NSM_Down }, /* BadLSReq */ + { nsm_ignore, NSM_Down }, /* LoadingDone */ + { nsm_ignore, NSM_Down }, /* AdjOK? */ + { nsm_ignore, NSM_Down }, /* SeqNumberMismatch */ + { nsm_ignore, NSM_Down }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* Attempt: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Init }, /* HelloReceived */ + { nsm_ignore, NSM_Attempt }, /* Start */ + { nsm_ignore, NSM_Attempt }, /* 2-WayReceived */ + { nsm_ignore, NSM_Attempt }, /* NegotiationDone */ + { nsm_ignore, NSM_Attempt }, /* ExchangeDone */ + { nsm_ignore, NSM_Attempt }, /* BadLSReq */ + { nsm_ignore, NSM_Attempt }, /* LoadingDone */ + { nsm_ignore, NSM_Attempt }, /* AdjOK? */ + { nsm_ignore, NSM_Attempt }, /* SeqNumberMismatch */ + { nsm_ignore, NSM_Attempt }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* Init: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Init }, /* HelloReceived */ + { nsm_ignore, NSM_Init }, /* Start */ + { nsm_twoway_received, NSM_DependUpon }, /* 2-WayReceived */ + { nsm_ignore, NSM_Init }, /* NegotiationDone */ + { nsm_ignore, NSM_Init }, /* ExchangeDone */ + { nsm_ignore, NSM_Init }, /* BadLSReq */ + { nsm_ignore, NSM_Init }, /* LoadingDone */ + { nsm_ignore, NSM_Init }, /* AdjOK? */ + { nsm_ignore, NSM_Init }, /* SeqNumberMismatch */ + { nsm_ignore, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* 2-Way: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_TwoWay }, /* HelloReceived */ + { nsm_ignore, NSM_TwoWay }, /* Start */ + { nsm_ignore, NSM_TwoWay }, /* 2-WayReceived */ + { nsm_ignore, NSM_TwoWay }, /* NegotiationDone */ + { nsm_ignore, NSM_TwoWay }, /* ExchangeDone */ + { nsm_ignore, NSM_TwoWay }, /* BadLSReq */ + { nsm_ignore, NSM_TwoWay }, /* LoadingDone */ + { nsm_adj_ok, NSM_DependUpon }, /* AdjOK? */ + { nsm_ignore, NSM_TwoWay }, /* SeqNumberMismatch */ + { nsm_oneway_received, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* ExStart: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_ExStart }, /* HelloReceived */ + { nsm_ignore, NSM_ExStart }, /* Start */ + { nsm_ignore, NSM_ExStart }, /* 2-WayReceived */ + { nsm_negotiation_done, NSM_Exchange }, /* NegotiationDone */ + { nsm_ignore, NSM_ExStart }, /* ExchangeDone */ + { nsm_ignore, NSM_ExStart }, /* BadLSReq */ + { nsm_ignore, NSM_ExStart }, /* LoadingDone */ + { nsm_adj_ok, NSM_DependUpon }, /* AdjOK? */ + { nsm_ignore, NSM_ExStart }, /* SeqNumberMismatch */ + { nsm_oneway_received, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* Exchange: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Exchange }, /* HelloReceived */ + { nsm_ignore, NSM_Exchange }, /* Start */ + { nsm_ignore, NSM_Exchange }, /* 2-WayReceived */ + { nsm_ignore, NSM_Exchange }, /* NegotiationDone */ + { nsm_exchange_done, NSM_DependUpon }, /* ExchangeDone */ + { nsm_bad_ls_req, NSM_ExStart }, /* BadLSReq */ + { nsm_ignore, NSM_Exchange }, /* LoadingDone */ + { nsm_adj_ok, NSM_DependUpon }, /* AdjOK? */ + { nsm_seq_number_mismatch, NSM_ExStart }, /* SeqNumberMismatch */ + { nsm_oneway_received, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { + /* Loading: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Loading }, /* HelloReceived */ + { nsm_ignore, NSM_Loading }, /* Start */ + { nsm_ignore, NSM_Loading }, /* 2-WayReceived */ + { nsm_ignore, NSM_Loading }, /* NegotiationDone */ + { nsm_ignore, NSM_Loading }, /* ExchangeDone */ + { nsm_bad_ls_req, NSM_ExStart }, /* BadLSReq */ + { nsm_ignore, NSM_Full }, /* LoadingDone */ + { nsm_adj_ok, NSM_DependUpon }, /* AdjOK? */ + { nsm_seq_number_mismatch, NSM_ExStart }, /* SeqNumberMismatch */ + { nsm_oneway_received, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, + { /* Full: */ + { nsm_ignore, NSM_DependUpon }, /* NoEvent */ + { nsm_hello_received, NSM_Full }, /* HelloReceived */ + { nsm_ignore, NSM_Full }, /* Start */ + { nsm_ignore, NSM_Full }, /* 2-WayReceived */ + { nsm_ignore, NSM_Full }, /* NegotiationDone */ + { nsm_ignore, NSM_Full }, /* ExchangeDone */ + { nsm_bad_ls_req, NSM_ExStart }, /* BadLSReq */ + { nsm_ignore, NSM_Full }, /* LoadingDone */ + { nsm_adj_ok, NSM_DependUpon }, /* AdjOK? */ + { nsm_seq_number_mismatch, NSM_ExStart }, /* SeqNumberMismatch */ + { nsm_oneway_received, NSM_Init }, /* 1-WayReceived */ + { nsm_kill_nbr, NSM_Down }, /* KillNbr */ + { nsm_inactivity_timer, NSM_Down }, /* InactivityTimer */ + { nsm_ll_down, NSM_Down }, /* LLDown */ + }, +}; + +static char *ospf_nsm_event_str[] = +{ + "NoEvent", + "HelloReceived", + "Start", + "2-WayReceived", + "NegotiationDone", + "ExchangeDone", + "BadLSReq", + "LoadingDone", + "AdjOK?", + "SeqNumberMismatch", + "1-WayReceived", + "KillNbr", + "InactivityTimer", + "LLDown", +}; + +void +nsm_change_state (struct ospf_neighbor *nbr, int state) +{ + struct ospf_interface *oi = nbr->oi; + struct ospf_area *vl_area = NULL; + u_char old_state; + int x; + int force = 1; + + /* Logging change of status. */ + if (IS_DEBUG_OSPF (nsm, NSM_STATUS)) + zlog_info ("NSM[%s:%s]: State change %s -> %s", + IF_NAME (nbr->oi), inet_ntoa (nbr->router_id), + LOOKUP (ospf_nsm_state_msg, nbr->state), + LOOKUP (ospf_nsm_state_msg, state)); + + /* Preserve old status. */ + old_state = nbr->state; + + /* Change to new status. */ + nbr->state = state; + + /* Statistics. */ + nbr->state_change++; + + if (oi->type == OSPF_IFTYPE_VIRTUALLINK) + vl_area = ospf_area_lookup_by_area_id (oi->ospf, oi->vl_data->vl_area_id); + + /* One of the neighboring routers changes to/from the FULL state. */ + if ((old_state != NSM_Full && state == NSM_Full) || + (old_state == NSM_Full && state != NSM_Full)) + { + if (state == NSM_Full) + { + oi->full_nbrs++; + oi->area->full_nbrs++; + + ospf_check_abr_status (oi->ospf); + + if (oi->type == OSPF_IFTYPE_VIRTUALLINK && vl_area) + if (++vl_area->full_vls == 1) + ospf_schedule_abr_task (oi->ospf); + + /* kevinm: refresh any redistributions */ + for (x = ZEBRA_ROUTE_SYSTEM; x < ZEBRA_ROUTE_MAX; x++) + { + if (x == ZEBRA_ROUTE_OSPF || x == ZEBRA_ROUTE_OSPF6) + continue; + ospf_external_lsa_refresh_type (oi->ospf, x, force); + } + } + else + { + oi->full_nbrs--; + oi->area->full_nbrs--; + + ospf_check_abr_status (oi->ospf); + + if (oi->type == OSPF_IFTYPE_VIRTUALLINK && vl_area) + if (vl_area->full_vls > 0) + if (--vl_area->full_vls == 0) + ospf_schedule_abr_task (oi->ospf); + + /* clear neighbor retransmit list */ + if (!ospf_ls_retransmit_isempty (nbr)) + ospf_ls_retransmit_clear (nbr); + } + + zlog_info ("nsm_change_state(): " + "scheduling new router-LSA origination"); + + ospf_router_lsa_timer_add (oi->area); + + if (oi->type == OSPF_IFTYPE_VIRTUALLINK) + { + struct ospf_area *vl_area = + ospf_area_lookup_by_area_id (oi->ospf, oi->vl_data->vl_area_id); + + if (vl_area) + ospf_router_lsa_timer_add (vl_area); + } + + /* Originate network-LSA. */ + if (oi->state == ISM_DR) + { + if (oi->network_lsa_self && oi->full_nbrs == 0) + { + ospf_lsa_flush_area (oi->network_lsa_self, oi->area); + ospf_lsa_unlock (oi->network_lsa_self); + oi->network_lsa_self = NULL; + OSPF_TIMER_OFF (oi->t_network_lsa_self); + } + else + ospf_network_lsa_timer_add (oi); + } + } + +#ifdef HAVE_OPAQUE_LSA + ospf_opaque_nsm_change (nbr, old_state); +#endif /* HAVE_OPAQUE_LSA */ + + /* Start DD exchange protocol */ + if (state == NSM_ExStart) + { + if (nbr->dd_seqnum == 0) + nbr->dd_seqnum = time (NULL); + else + nbr->dd_seqnum++; + + nbr->dd_flags = OSPF_DD_FLAG_I|OSPF_DD_FLAG_M|OSPF_DD_FLAG_MS; + ospf_db_desc_send (nbr); + } + + /* clear cryptographic sequence number */ + if (state == NSM_Down) + nbr->crypt_seqnum = 0; + + /* Generete NeighborChange ISM event. */ +#ifdef BUGGY_ISM_TRANSITION + if ((old_state < NSM_TwoWay && state >= NSM_TwoWay) || + (old_state >= NSM_TwoWay && state < NSM_TwoWay)) + OSPF_ISM_EVENT_EXECUTE (oi, ISM_NeighborChange); +#else /* BUGGY_ISM_TRANSITION */ + switch (oi->state) { + case ISM_DROther: + case ISM_Backup: + case ISM_DR: + if ((old_state < NSM_TwoWay && state >= NSM_TwoWay) || + (old_state >= NSM_TwoWay && state < NSM_TwoWay)) + OSPF_ISM_EVENT_EXECUTE (oi, ISM_NeighborChange); + break; + default: + /* ISM_PointToPoint -> ISM_Down, ISM_Loopback -> ISM_Down, etc. */ + break; + } +#endif /* BUGGY_ISM_TRANSITION */ + + /* Performance hack. Send hello immideately when some neighbor enter + Init state. This whay we decrease neighbor discovery time. Gleb.*/ + if (state == NSM_Init) + { + OSPF_ISM_TIMER_OFF (oi->t_hello); + OSPF_ISM_TIMER_ON (oi->t_hello, ospf_hello_timer, 1); + } + + /* Preserve old status? */ +} + +/* Execute NSM event process. */ +int +ospf_nsm_event (struct thread *thread) +{ + int event; + int next_state; + struct ospf_neighbor *nbr; + struct in_addr router_id; + int old_state; + struct ospf_interface *oi; + + nbr = THREAD_ARG (thread); + event = THREAD_VAL (thread); + router_id = nbr->router_id; + + old_state = nbr->state; + oi = nbr->oi ; + + /* Call function. */ + next_state = (*(NSM [nbr->state][event].func))(nbr); + + /* When event is NSM_KillNbr or InactivityTimer, the neighbor is + deleted. */ + if (event == NSM_KillNbr || event == NSM_InactivityTimer) + { + if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) + zlog_info ("NSM[%s:%s]: neighbor deleted", + IF_NAME (oi), inet_ntoa (router_id)); + + /* Timers are canceled in ospf_nbr_free, moreover we cannot call + nsm_timer_set here because nbr is freed already!!!*/ + /*nsm_timer_set (nbr);*/ + + return 0; + } + + if (! next_state) + next_state = NSM [nbr->state][event].next_state; + + if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) + zlog_info ("NSM[%s:%s]: %s (%s)", IF_NAME (oi), + inet_ntoa (nbr->router_id), + LOOKUP (ospf_nsm_state_msg, nbr->state), + ospf_nsm_event_str [event]); + + /* If state is changed. */ + if (next_state != nbr->state) + nsm_change_state (nbr, next_state); + + /* Make sure timer is set. */ + nsm_timer_set (nbr); + + return 0; +} + +/* Check loading state. */ +void +ospf_check_nbr_loading (struct ospf_neighbor *nbr) +{ + if (nbr->state == NSM_Loading) + { + if (ospf_ls_request_isempty (nbr)) + OSPF_NSM_EVENT_SCHEDULE (nbr, NSM_LoadingDone); + else if (nbr->ls_req_last == NULL) + ospf_ls_req_event (nbr); + } +} diff --git a/ospfd/ospf_nsm.h b/ospfd/ospf_nsm.h index 6c3dc4dd..3d257305 100644 --- a/ospfd/ospf_nsm.h +++ b/ospfd/ospf_nsm.h @@ -54,28 +54,28 @@ #define OSPF_NSM_EVENT_MAX 14 /* Macro for OSPF NSM timer turn on. */ -#define OSPF_NSM_TIMER_ON(T,F,V) \ - do { \ - if (!(T)) \ - (T) = thread_add_timer (master, (F), nbr, (V)); \ +#define OSPF_NSM_TIMER_ON(T,F,V) \ + do { \ + if (!(T)) \ + (T) = thread_add_timer (master, (F), nbr, (V)); \ } while (0) /* Macro for OSPF NSM timer turn off. */ -#define OSPF_NSM_TIMER_OFF(X) \ - do { \ - if (X) \ - { \ - thread_cancel (X); \ - (X) = NULL; \ - } \ +#define OSPF_NSM_TIMER_OFF(X) \ + do { \ + if (X) \ + { \ + thread_cancel (X); \ + (X) = NULL; \ + } \ } while (0) /* Macro for OSPF NSM schedule event. */ -#define OSPF_NSM_EVENT_SCHEDULE(N,E) \ +#define OSPF_NSM_EVENT_SCHEDULE(N,E) \ thread_add_event (master, ospf_nsm_event, (N), (E)) /* Macro for OSPF NSM execute event. */ -#define OSPF_NSM_EVENT_EXECUTE(N,E) \ +#define OSPF_NSM_EVENT_EXECUTE(N,E) \ thread_execute (master, ospf_nsm_event, (N), (E)) /* Prototypes. */ @@ -85,6 +85,7 @@ void ospf_check_nbr_loading (struct ospf_neighbor *); int ospf_db_summary_isempty (struct ospf_neighbor *); int ospf_db_summary_count (struct ospf_neighbor *); void ospf_db_summary_clear (struct ospf_neighbor *); +/* void ospf_db_summary_delete_all (struct ospf_neighbor *); */ #endif /* _ZEBRA_OSPF_NSM_H */ diff --git a/ospfd/ospf_opaque.c b/ospfd/ospf_opaque.c index 1ce70462..f1fe783c 100644 --- a/ospfd/ospf_opaque.c +++ b/ospfd/ospf_opaque.c @@ -66,6 +66,11 @@ #include "ospfd/ospf_te.h" #endif /* HAVE_OSPF_TE */ +#ifdef SUPPORT_OSPF_API +int ospf_apiserver_init (void); +void ospf_apiserver_term (void); +#endif /* SUPPORT_OSPF_API */ + static void ospf_opaque_register_vty (void); static void ospf_opaque_funclist_init (void); static void ospf_opaque_funclist_term (void); @@ -85,6 +90,11 @@ ospf_opaque_init (void) exit (1); #endif /* HAVE_OSPF_TE */ +#ifdef SUPPORT_OSPF_API + if (ospf_apiserver_init () != 0) + exit (1); +#endif /* SUPPORT_OSPF_API */ + return; } @@ -95,6 +105,10 @@ ospf_opaque_term (void) ospf_mpls_te_term (); #endif /* HAVE_OSPF_TE */ +#ifdef SUPPORT_OSPF_API + ospf_apiserver_term (); +#endif /* SUPPORT_OSPF_API */ + ospf_opaque_funclist_term (); return; } diff --git a/ospfd/ospf_route.c b/ospfd/ospf_route.c index 3733ca55..96f7531f 100644 --- a/ospfd/ospf_route.c +++ b/ospfd/ospf_route.c @@ -206,22 +206,22 @@ ospf_route_delete_uniq (struct route_table *rt, struct route_table *cmprt) /* Install routes to table. */ void -ospf_route_install (struct ospf *ospf, struct route_table *rt) +ospf_route_install (struct route_table *rt) { struct route_node *rn; struct ospf_route *or; /* rt contains new routing table, new_table contains an old one. updating pointers */ - if (ospf->old_table) - ospf_route_table_free (ospf->old_table); - - ospf->old_table = ospf->new_table; - ospf->new_table = rt; + if (ospf_top->old_table) + ospf_route_table_free (ospf_top->old_table); + + ospf_top->old_table = ospf_top->new_table; + ospf_top->new_table = rt; /* Delete old routes. */ - if (ospf->old_table) - ospf_route_delete_uniq (ospf->old_table, rt); + if (ospf_top->old_table) + ospf_route_delete_uniq (ospf_top->old_table, rt); /* Install new routes. */ for (rn = route_top (rt); rn; rn = route_next (rn)) @@ -229,12 +229,12 @@ ospf_route_install (struct ospf *ospf, struct route_table *rt) { if (or->type == OSPF_DESTINATION_NETWORK) { - if (! ospf_route_match_same (ospf->old_table, + if (! ospf_route_match_same (ospf_top->old_table, (struct prefix_ipv4 *)&rn->p, or)) ospf_zebra_add ((struct prefix_ipv4 *) &rn->p, or); } else if (or->type == OSPF_DESTINATION_DISCARD) - if (! ospf_route_match_same (ospf->old_table, + if (! ospf_route_match_same (ospf_top->old_table, (struct prefix_ipv4 *) &rn->p, or)) ospf_zebra_add_discard ((struct prefix_ipv4 *) &rn->p); } @@ -595,7 +595,7 @@ ospf_intra_add_stub (struct route_table *rt, struct router_lsa_link *link, if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_intra_add_stub(): this network is on this router"); - if ((oi = ospf_if_lookup_by_prefix (area->ospf, &p))) + if ((oi = ospf_if_lookup_by_prefix (&p))) { if (IS_DEBUG_OSPF_EVENT) zlog_info ("ospf_intra_add_stub(): the interface is %s", @@ -676,15 +676,12 @@ ospf_route_table_dump (struct route_table *rt) void ospf_terminate () { - struct ospf *ospf; - listnode node; - - LIST_LOOP (om->ospf, ospf, node) + if (ospf_top) { - if (ospf->new_table) - ospf_route_delete (ospf->new_table); - if (ospf->old_external_route) - ospf_route_delete (ospf->old_external_route); + if (ospf_top->new_table) + ospf_route_delete (ospf_top->new_table); + if (ospf_top->old_external_route) + ospf_route_delete (ospf_top->old_external_route); } } @@ -693,8 +690,7 @@ ospf_terminate () o The other paths, intra-area backbone paths and inter-area paths, are of equal preference. */ int -ospf_asbr_route_cmp (struct ospf *ospf, struct ospf_route *r1, - struct ospf_route *r2) +ospf_asbr_route_cmp (struct ospf_route *r1, struct ospf_route *r2) { u_char r1_type, r2_type; @@ -702,7 +698,7 @@ ospf_asbr_route_cmp (struct ospf *ospf, struct ospf_route *r1, r2_type = r2->path_type; /* If RFC1583Compat flag is on -- all paths are equal. */ - if (CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) + if (CHECK_FLAG (ospf_top->config, OSPF_RFC1583_COMPATIBLE)) return 0; /* r1/r2 itself is backbone, and it's Inter-area path. */ @@ -719,8 +715,7 @@ ospf_asbr_route_cmp (struct ospf *ospf, struct ospf_route *r1, ret == 0 -- r1 and r2 are the same. ret > 0 -- r2 is better. */ int -ospf_route_cmp (struct ospf *ospf, struct ospf_route *r1, - struct ospf_route *r2) +ospf_route_cmp (struct ospf_route *r1, struct ospf_route *r2) { int ret = 0; @@ -737,9 +732,9 @@ ospf_route_cmp (struct ospf *ospf, struct ospf_route *r1, case OSPF_PATH_INTER_AREA: break; case OSPF_PATH_TYPE1_EXTERNAL: - if (!CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) + if (!CHECK_FLAG (ospf_top->config, OSPF_RFC1583_COMPATIBLE)) { - ret = ospf_asbr_route_cmp (ospf, r1->u.ext.asbr, r2->u.ext.asbr); + ret = ospf_asbr_route_cmp (r1->u.ext.asbr, r2->u.ext.asbr); if (ret != 0) return ret; } @@ -748,9 +743,9 @@ ospf_route_cmp (struct ospf *ospf, struct ospf_route *r1, if ((ret = (r1->u.ext.type2_cost - r2->u.ext.type2_cost))) return ret; - if (!CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) + if (!CHECK_FLAG (ospf_top->config, OSPF_RFC1583_COMPATIBLE)) { - ret = ospf_asbr_route_cmp (ospf, r1->u.ext.asbr, r2->u.ext.asbr); + ret = ospf_asbr_route_cmp (r1->u.ext.asbr, r2->u.ext.asbr); if (ret != 0) return ret; } diff --git a/ospfd/ospf_route.h b/ospfd/ospf_route.h index 4222f528..81f59c48 100644 --- a/ospfd/ospf_route.h +++ b/ospfd/ospf_route.h @@ -124,14 +124,14 @@ struct ospf_route }; struct ospf_path *ospf_path_new (); -void ospf_path_free (struct ospf_path *); +void ospf_path_free (struct ospf_path *op); struct ospf_path *ospf_path_lookup (list, struct ospf_path *); struct ospf_route *ospf_route_new (); -void ospf_route_free (struct ospf_route *); -void ospf_route_delete (struct route_table *); -void ospf_route_table_free (struct route_table *); +void ospf_route_free (struct ospf_route *or); +void ospf_route_delete (struct route_table *rt); +void ospf_route_table_free (struct route_table *rt); -void ospf_route_install (struct ospf *, struct route_table *); +void ospf_route_install (struct route_table *); void ospf_route_table_dump (struct route_table *); void ospf_intra_add_router (struct route_table *, struct vertex *, @@ -143,7 +143,7 @@ void ospf_intra_add_transit (struct route_table *, struct vertex *, void ospf_intra_add_stub (struct route_table *, struct router_lsa_link *, struct vertex *, struct ospf_area *); -int ospf_route_cmp (struct ospf *, struct ospf_route *, struct ospf_route *); +int ospf_route_cmp (struct ospf_route *, struct ospf_route *); void ospf_route_copy_nexthops (struct ospf_route *, list); void ospf_route_copy_nexthops_from_vertex (struct ospf_route *, struct vertex * ); diff --git a/ospfd/ospf_routemap.c b/ospfd/ospf_routemap.c index 017acb2b..64822d61 100644 --- a/ospfd/ospf_routemap.c +++ b/ospfd/ospf_routemap.c @@ -756,8 +756,8 @@ DEFUN (set_metric_type, "set metric-type (type-1|type-2)", SET_STR "Type of metric for destination routing protocol\n" - "OSPF external type 1 metric\n" - "OSPF external type 2 metric\n") + "OSPF[6] external type 1 metric\n" + "OSPF[6] external type 2 metric\n") { if (strcmp (argv[0], "1") == 0) return ospf_route_set_add (vty, vty->index, "metric-type", "type-1"); @@ -786,8 +786,8 @@ ALIAS (no_set_metric_type, NO_STR SET_STR "Type of metric for destination routing protocol\n" - "OSPF external type 1 metric\n" - "OSPF external type 2 metric\n") + "OSPF[6] external type 1 metric\n" + "OSPF[6] external type 2 metric\n") /* Route-map init */ void diff --git a/ospfd/ospf_snmp.c b/ospfd/ospf_snmp.c index 0fe9cae6..2e1a9b3c 100644 --- a/ospfd/ospf_snmp.c +++ b/ospfd/ospf_snmp.c @@ -24,6 +24,9 @@ #include <zebra.h> #ifdef HAVE_SNMP +#ifdef HAVE_NETSNMP +#include <net-snmp/net-snmp-config.h> +#endif #include <asn1.h> #include <snmp.h> #include <snmp_impl.h> @@ -1437,7 +1440,7 @@ ospf_snmp_if_update (struct interface *ifp) /* Lookup first IPv4 address entry. */ LIST_LOOP (ifp->connected, ifc, nn) { - if (if_is_pointopoint (ifp)) + if (ifc_pointopoint (ifc)) p = ifc->destination; else p = ifc->address; diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c index 412e44d7..33616d83 100644 --- a/ospfd/ospf_spf.c +++ b/ospfd/ospf_spf.c @@ -372,7 +372,6 @@ ospf_nexthop_calculation (struct ospf_area *area, { struct prefix_ipv4 la; la.prefixlen = oi->address->prefixlen; - /* We link to them on PtMP interface - find the interface on w */ while ((l2 = ospf_get_next_link (w, v, l2))) diff --git a/ospfd/ospf_spf.h b/ospfd/ospf_spf.h index e71224bd..7fe682ee 100644 --- a/ospfd/ospf_spf.h +++ b/ospfd/ospf_spf.h @@ -44,7 +44,7 @@ struct vertex_nexthop struct vertex *parent; }; -void ospf_spf_calculate_schedule (struct ospf *); +void ospf_spf_calculate_schedule (); void ospf_rtrs_free (struct route_table *); /* void ospf_spf_calculate_timer_add (); */ diff --git a/ospfd/ospf_te.c b/ospfd/ospf_te.c index 2129e354..aedac32a 100644 --- a/ospfd/ospf_te.c +++ b/ospfd/ospf_te.c @@ -414,8 +414,8 @@ set_linkparams_link_id (struct ospf_interface *oi, struct mpls_te_link *lp) { case OSPF_IFTYPE_POINTOPOINT: /* Take the router ID of the neighbor. */ - if ((nbr = ospf_nbr_lookup_ptop (oi)) - && nbr->state == NSM_Full) + if (((nbr = ospf_nbr_lookup_ptop (oi->nbrs, oi->area->top->router_id))) + && (nbr->state == NSM_Full)) { lp->link_id.value = nbr->router_id; done = 1; @@ -429,7 +429,7 @@ set_linkparams_link_id (struct ospf_interface *oi, struct mpls_te_link *lp) if (nbr->state == NSM_Full || (IPV4_ADDR_SAME (&oi->address->u.prefix4, &DR (oi)) - && ospf_nbr_count (oi, NSM_Full) > 0)) + && ospf_nbr_count (oi->nbrs, NSM_Full) > 0)) { lp->link_id.value = DR (oi); done = 1; @@ -628,7 +628,7 @@ ospf_mpls_te_ism_change (struct ospf_interface *oi, int old_state) zlog_warn ("ospf_mpls_te_ism_change: Cannot get linkparams from OI(%s)?", IF_NAME (oi)); goto out; } - if (oi->area == NULL || oi->area->ospf == NULL) + if (oi->area == NULL || oi->area->top == NULL) { zlog_warn ("ospf_mpls_te_ism_change: Cannot refer to OSPF from OI(%s)?", IF_NAME (oi)); @@ -891,7 +891,7 @@ ospf_mpls_te_lsa_new (struct ospf_area *area, struct mpls_te_link *lp) zlog_info ("LSA[Type%d:%s]: Create an Opaque-LSA/MPLS-TE instance", lsa_type, inet_ntoa (lsa_id)); /* Set opaque-LSA header fields. */ - lsa_header_set (s, options, lsa_type, lsa_id, area->ospf->router_id); + lsa_header_set (s, options, lsa_type, lsa_id); /* Set opaque-LSA body fields. */ ospf_mpls_te_lsa_body_set (s, lp); @@ -939,7 +939,7 @@ ospf_mpls_te_lsa_originate1 (struct ospf_area *area, struct mpls_te_link *lp) } /* Install this LSA into LSDB. */ - if (ospf_lsa_install (area->ospf, NULL/*oi*/, new) == NULL) + if (ospf_lsa_install (NULL/*oi*/, new) == NULL) { zlog_warn ("ospf_mpls_te_lsa_originate1: ospf_lsa_install() ?"); ospf_lsa_free (new); @@ -950,7 +950,7 @@ ospf_mpls_te_lsa_originate1 (struct ospf_area *area, struct mpls_te_link *lp) lp->flags |= LPFLG_LSA_ENGAGED; /* Update new LSA origination count. */ - area->ospf->lsa_originate_count++; + area->top->lsa_originate_count++; /* Flood new LSA through area. */ ospf_flood_through_area (area, NULL/*nbr*/, new); @@ -1059,7 +1059,7 @@ ospf_mpls_te_lsa_refresh (struct ospf_lsa *lsa) /* Install this LSA into LSDB. */ /* Given "lsa" will be freed in the next function. */ - if (ospf_lsa_install (area->ospf, NULL/*oi*/, new) == NULL) + if (ospf_lsa_install (NULL/*oi*/, new) == NULL) { zlog_warn ("ospf_mpls_te_lsa_refresh: ospf_lsa_install() ?"); ospf_lsa_free (new); diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 4896d352..ed4b4fd1 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -223,7 +223,7 @@ DEFUN (ospf_router_id, } ALIAS (ospf_router_id, - router_id_cmd, + router_ospf_id_cmd, "router-id A.B.C.D", "router-id for the OSPF process\n" "OSPF router-id in IP address format\n") @@ -245,13 +245,13 @@ DEFUN (no_ospf_router_id, } ALIAS (no_ospf_router_id, - no_router_id_cmd, + no_router_ospf_id_cmd, "no router-id", NO_STR "router-id for the OSPF process\n") -DEFUN (passive_interface, - passive_interface_addr_cmd, +DEFUN (ospf_passive_interface, + ospf_passive_interface_addr_cmd, "passive-interface IFNAME A.B.C.D", "Suppress routing updates on an interface\n" "Interface's name\n") @@ -291,14 +291,14 @@ DEFUN (passive_interface, return CMD_SUCCESS; } -ALIAS (passive_interface, - passive_interface_cmd, +ALIAS (ospf_passive_interface, + ospf_passive_interface_cmd, "passive-interface IFNAME", "Suppress routing updates on an interface\n" "Interface's name\n") -DEFUN (no_passive_interface, - no_passive_interface_addr_cmd, +DEFUN (no_ospf_passive_interface, + no_ospf_passive_interface_addr_cmd, "no passive-interface IFNAME A.B.C.D", NO_STR "Allow routing updates on an interface\n" @@ -346,15 +346,15 @@ DEFUN (no_passive_interface, return CMD_SUCCESS; } -ALIAS (no_passive_interface, - no_passive_interface_cmd, +ALIAS (no_ospf_passive_interface, + no_ospf_passive_interface_cmd, "no passive-interface IFNAME", NO_STR "Allow routing updates on an interface\n" "Interface's name\n") -DEFUN (network_area, - network_area_cmd, +DEFUN (ospf_network_area, + ospf_network_area_cmd, "network A.B.C.D/M area (A.B.C.D|<0-4294967295>)", "Enable routing on an IP network\n" "OSPF network prefix\n" @@ -381,8 +381,8 @@ DEFUN (network_area, return CMD_SUCCESS; } -DEFUN (no_network_area, - no_network_area_cmd, +DEFUN (no_ospf_network_area, + no_ospf_network_area_cmd, "no network A.B.C.D/M area (A.B.C.D|<0-4294967295>)", NO_STR "Enable routing on an IP network\n" @@ -412,8 +412,8 @@ DEFUN (no_network_area, } -DEFUN (area_range, - area_range_cmd, +DEFUN (ospf_area_range, + ospf_area_range_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -440,8 +440,8 @@ DEFUN (area_range, return CMD_SUCCESS; } -ALIAS (area_range, - area_range_advertise_cmd, +ALIAS (ospf_area_range, + ospf_area_range_advertise_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -450,8 +450,8 @@ ALIAS (area_range, "Area range prefix\n" "Advertise this range (default)\n") -ALIAS (area_range, - area_range_cost_cmd, +ALIAS (ospf_area_range, + ospf_area_range_cost_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M cost <0-16777215>", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -461,8 +461,8 @@ ALIAS (area_range, "User specified metric for this range\n" "Advertised metric for this range\n") -ALIAS (area_range, - area_range_advertise_cost_cmd, +ALIAS (ospf_area_range, + ospf_area_range_advertise_cost_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise cost <0-16777215>", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -473,8 +473,8 @@ ALIAS (area_range, "User specified metric for this range\n" "Advertised metric for this range\n") -DEFUN (area_range_not_advertise, - area_range_not_advertise_cmd, +DEFUN (ospf_area_range_not_advertise, + ospf_area_range_not_advertise_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M not-advertise", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -496,8 +496,8 @@ DEFUN (area_range_not_advertise, return CMD_SUCCESS; } -DEFUN (no_area_range, - no_area_range_cmd, +DEFUN (no_ospf_area_range, + no_ospf_area_range_cmd, "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", NO_STR "OSPF area parameters\n" @@ -519,8 +519,8 @@ DEFUN (no_area_range, return CMD_SUCCESS; } -ALIAS (no_area_range, - no_area_range_advertise_cmd, +ALIAS (no_ospf_area_range, + no_ospf_area_range_advertise_cmd, "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M (advertise|not-advertise)", NO_STR "OSPF area parameters\n" @@ -531,8 +531,8 @@ ALIAS (no_area_range, "Advertise this range (default)\n" "DoNotAdvertise this range\n") -ALIAS (no_area_range, - no_area_range_cost_cmd, +ALIAS (no_ospf_area_range, + no_ospf_area_range_cost_cmd, "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M cost <0-16777215>", NO_STR "OSPF area parameters\n" @@ -543,8 +543,8 @@ ALIAS (no_area_range, "User specified metric for this range\n" "Advertised metric for this range\n") -ALIAS (no_area_range, - no_area_range_advertise_cost_cmd, +ALIAS (no_ospf_area_range, + no_ospf_area_range_advertise_cost_cmd, "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise cost <0-16777215>", NO_STR "OSPF area parameters\n" @@ -556,8 +556,8 @@ ALIAS (no_area_range, "User specified metric for this range\n" "Advertised metric for this range\n") -DEFUN (area_range_substitute, - area_range_substitute_cmd, +DEFUN (ospf_area_range_substitute, + ospf_area_range_substitute_cmd, "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -581,8 +581,8 @@ DEFUN (area_range_substitute, return CMD_SUCCESS; } -DEFUN (no_area_range_substitute, - no_area_range_substitute_cmd, +DEFUN (no_ospf_area_range_substitute, + no_ospf_area_range_substitute_cmd, "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", NO_STR "OSPF area parameters\n" @@ -871,8 +871,8 @@ ospf_vl_set (struct ospf *ospf, struct ospf_vl_config_data *vl_config) "Use MD5 algorithm\n" \ "The OSPF password (key)" -DEFUN (area_vlink, - area_vlink_cmd, +DEFUN (ospf_area_vlink, + ospf_area_vlink_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D", VLINK_HELPSTR_IPADDR) { @@ -1005,8 +1005,8 @@ DEFUN (area_vlink, } -DEFUN (no_area_vlink, - no_area_vlink_cmd, +DEFUN (no_ospf_area_vlink, + no_ospf_area_vlink_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D", NO_STR VLINK_HELPSTR_IPADDR) @@ -1121,23 +1121,23 @@ DEFUN (no_area_vlink, return ospf_vl_set (ospf, &vl_config); } -ALIAS (area_vlink, - area_vlink_param1_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_param1_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", VLINK_HELPSTR_IPADDR VLINK_HELPSTR_TIME_PARAM) -ALIAS (no_area_vlink, - no_area_vlink_param1_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_param1_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", NO_STR VLINK_HELPSTR_IPADDR VLINK_HELPSTR_TIME_PARAM) -ALIAS (area_vlink, - area_vlink_param2_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_param2_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", @@ -1145,8 +1145,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (no_area_vlink, - no_area_vlink_param2_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_param2_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", @@ -1155,8 +1155,8 @@ ALIAS (no_area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (area_vlink, - area_vlink_param3_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_param3_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " @@ -1166,8 +1166,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (no_area_vlink, - no_area_vlink_param3_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_param3_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " @@ -1178,8 +1178,8 @@ ALIAS (no_area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (area_vlink, - area_vlink_param4_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_param4_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " @@ -1191,8 +1191,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (no_area_vlink, - no_area_vlink_param4_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_param4_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " @@ -1205,60 +1205,60 @@ ALIAS (no_area_vlink, VLINK_HELPSTR_TIME_PARAM VLINK_HELPSTR_TIME_PARAM) -ALIAS (area_vlink, - area_vlink_authtype_args_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_args_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) (message-digest|null)", VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTHTYPE_ALL) -ALIAS (area_vlink, - area_vlink_authtype_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|)", VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTHTYPE_SIMPLE) -ALIAS (no_area_vlink, - no_area_vlink_authtype_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_authtype_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|)", NO_STR VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTHTYPE_SIMPLE) -ALIAS (area_vlink, - area_vlink_md5_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_md5_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(message-digest-key|) <1-255> md5 KEY", VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTH_MD5) -ALIAS (no_area_vlink, - no_area_vlink_md5_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_md5_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(message-digest-key|) <1-255>", NO_STR VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTH_MD5) -ALIAS (area_vlink, - area_vlink_authkey_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authkey_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication-key|) AUTH_KEY", VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTH_SIMPLE) -ALIAS (no_area_vlink, - no_area_vlink_authkey_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_authkey_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication-key|)", NO_STR VLINK_HELPSTR_IPADDR VLINK_HELPSTR_AUTH_SIMPLE) -ALIAS (area_vlink, - area_vlink_authtype_args_authkey_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_args_authkey_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) (message-digest|null) " "(authentication-key|) AUTH_KEY", @@ -1266,8 +1266,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_AUTHTYPE_ALL VLINK_HELPSTR_AUTH_SIMPLE) -ALIAS (area_vlink, - area_vlink_authtype_authkey_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_authkey_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) " "(authentication-key|) AUTH_KEY", @@ -1275,8 +1275,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_AUTHTYPE_SIMPLE VLINK_HELPSTR_AUTH_SIMPLE) -ALIAS (no_area_vlink, - no_area_vlink_authtype_authkey_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_authtype_authkey_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) " "(authentication-key|)", @@ -1285,8 +1285,8 @@ ALIAS (no_area_vlink, VLINK_HELPSTR_AUTHTYPE_SIMPLE VLINK_HELPSTR_AUTH_SIMPLE) -ALIAS (area_vlink, - area_vlink_authtype_args_md5_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_args_md5_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) (message-digest|null) " "(message-digest-key|) <1-255> md5 KEY", @@ -1294,8 +1294,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_AUTHTYPE_ALL VLINK_HELPSTR_AUTH_MD5) -ALIAS (area_vlink, - area_vlink_authtype_md5_cmd, +ALIAS (ospf_area_vlink, + ospf_area_vlink_authtype_md5_cmd, "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) " "(message-digest-key|) <1-255> md5 KEY", @@ -1303,8 +1303,8 @@ ALIAS (area_vlink, VLINK_HELPSTR_AUTHTYPE_SIMPLE VLINK_HELPSTR_AUTH_MD5) -ALIAS (no_area_vlink, - no_area_vlink_authtype_md5_cmd, +ALIAS (no_ospf_area_vlink, + no_ospf_area_vlink_authtype_md5_cmd, "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " "(authentication|) " "(message-digest-key|)", @@ -1314,8 +1314,8 @@ ALIAS (no_area_vlink, VLINK_HELPSTR_AUTH_MD5) -DEFUN (area_shortcut, - area_shortcut_cmd, +DEFUN (ospf_area_shortcut, + ospf_area_shortcut_cmd, "area (A.B.C.D|<0-4294967295>) shortcut (default|enable|disable)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1354,8 +1354,8 @@ DEFUN (area_shortcut, return CMD_SUCCESS; } -DEFUN (no_area_shortcut, - no_area_shortcut_cmd, +DEFUN (no_ospf_area_shortcut, + no_ospf_area_shortcut_cmd, "no area (A.B.C.D|<0-4294967295>) shortcut (enable|disable)", NO_STR "OSPF area parameters\n" @@ -1382,8 +1382,8 @@ DEFUN (no_area_shortcut, } -DEFUN (area_stub, - area_stub_cmd, +DEFUN (ospf_area_stub, + ospf_area_stub_cmd, "area (A.B.C.D|<0-4294967295>) stub", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1409,8 +1409,8 @@ DEFUN (area_stub, return CMD_SUCCESS; } -DEFUN (area_stub_no_summary, - area_stub_no_summary_cmd, +DEFUN (ospf_area_stub_no_summary, + ospf_area_stub_no_summary_cmd, "area (A.B.C.D|<0-4294967295>) stub no-summary", "OSPF stub parameters\n" "OSPF area ID in IP address format\n" @@ -1437,8 +1437,8 @@ DEFUN (area_stub_no_summary, return CMD_SUCCESS; } -DEFUN (no_area_stub, - no_area_stub_cmd, +DEFUN (no_ospf_area_stub, + no_ospf_area_stub_cmd, "no area (A.B.C.D|<0-4294967295>) stub", NO_STR "OSPF area parameters\n" @@ -1458,8 +1458,8 @@ DEFUN (no_area_stub, return CMD_SUCCESS; } -DEFUN (no_area_stub_no_summary, - no_area_stub_no_summary_cmd, +DEFUN (no_ospf_area_stub_no_summary, + no_ospf_area_stub_no_summary_cmd, "no area (A.B.C.D|<0-4294967295>) stub no-summary", NO_STR "OSPF area parameters\n" @@ -1479,8 +1479,8 @@ DEFUN (no_area_stub_no_summary, } #ifdef HAVE_NSSA -DEFUN (area_nssa, - area_nssa_cmd, +DEFUN (ospf_area_nssa, + ospf_area_nssa_cmd, "area (A.B.C.D|<0-4294967295>) nssa", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1520,8 +1520,8 @@ DEFUN (area_nssa, return CMD_SUCCESS; } -ALIAS (area_nssa, - area_nssa_translate_no_summary_cmd, +ALIAS (ospf_area_nssa, + ospf_area_nssa_translate_no_summary_cmd, "area (A.B.C.D|<0-4294967295>) nssa (translate-candidate|translate-never|translate-always) (no-summary|)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1533,8 +1533,8 @@ ALIAS (area_nssa, "Do not inject inter-area routes into nssa\n" "dummy\n") -ALIAS (area_nssa, - area_nssa_translate_cmd, +ALIAS (ospf_area_nssa, + ospf_area_nssa_translate_cmd, "area (A.B.C.D|<0-4294967295>) nssa (translate-candidate|translate-never|translate-always)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1544,8 +1544,8 @@ ALIAS (area_nssa, "Configure NSSA-ABR to never translate\n" "Configure NSSA-ABR to always translate\n") -DEFUN (area_nssa_no_summary, - area_nssa_no_summary_cmd, +DEFUN (ospf_area_nssa_no_summary, + ospf_area_nssa_no_summary_cmd, "area (A.B.C.D|<0-4294967295>) nssa no-summary", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1572,8 +1572,8 @@ DEFUN (area_nssa_no_summary, return CMD_SUCCESS; } -DEFUN (no_area_nssa, - no_area_nssa_cmd, +DEFUN (no_ospf_area_nssa, + no_ospf_area_nssa_cmd, "no area (A.B.C.D|<0-4294967295>) nssa", NO_STR "OSPF area parameters\n" @@ -1593,8 +1593,8 @@ DEFUN (no_area_nssa, return CMD_SUCCESS; } -DEFUN (no_area_nssa_no_summary, - no_area_nssa_no_summary_cmd, +DEFUN (no_ospf_area_nssa_no_summary, + no_ospf_area_nssa_no_summary_cmd, "no area (A.B.C.D|<0-4294967295>) nssa no-summary", NO_STR "OSPF area parameters\n" @@ -1615,8 +1615,8 @@ DEFUN (no_area_nssa_no_summary, #endif /* HAVE_NSSA */ -DEFUN (area_default_cost, - area_default_cost_cmd, +DEFUN (ospf_area_default_cost, + ospf_area_default_cost_cmd, "area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1646,8 +1646,8 @@ DEFUN (area_default_cost, return CMD_SUCCESS; } -DEFUN (no_area_default_cost, - no_area_default_cost_cmd, +DEFUN (no_ospf_area_default_cost, + no_ospf_area_default_cost_cmd, "no area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", NO_STR "OSPF area parameters\n" @@ -1682,8 +1682,8 @@ DEFUN (no_area_default_cost, return CMD_SUCCESS; } -DEFUN (area_export_list, - area_export_list_cmd, +DEFUN (ospf_area_export_list, + ospf_area_export_list_cmd, "area (A.B.C.D|<0-4294967295>) export-list NAME", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1704,8 +1704,8 @@ DEFUN (area_export_list, return CMD_SUCCESS; } -DEFUN (no_area_export_list, - no_area_export_list_cmd, +DEFUN (no_ospf_area_export_list, + no_ospf_area_export_list_cmd, "no area (A.B.C.D|<0-4294967295>) export-list NAME", NO_STR "OSPF area parameters\n" @@ -1731,8 +1731,8 @@ DEFUN (no_area_export_list, } -DEFUN (area_import_list, - area_import_list_cmd, +DEFUN (ospf_area_import_list, + ospf_area_import_list_cmd, "area (A.B.C.D|<0-4294967295>) import-list NAME", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1753,8 +1753,8 @@ DEFUN (area_import_list, return CMD_SUCCESS; } -DEFUN (no_area_import_list, - no_area_import_list_cmd, +DEFUN (no_ospf_area_import_list, + no_ospf_area_import_list_cmd, "no area (A.B.C.D|<0-4294967295>) import-list NAME", NO_STR "OSPF area parameters\n" @@ -1778,8 +1778,8 @@ DEFUN (no_area_import_list, return CMD_SUCCESS; } -DEFUN (area_filter_list, - area_filter_list_cmd, +DEFUN (ospf_area_filter_list, + ospf_area_filter_list_cmd, "area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1822,8 +1822,8 @@ DEFUN (area_filter_list, return CMD_SUCCESS; } -DEFUN (no_area_filter_list, - no_area_filter_list_cmd, +DEFUN (no_ospf_area_filter_list, + no_ospf_area_filter_list_cmd, "no area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", NO_STR "OSPF area parameters\n" @@ -1878,8 +1878,8 @@ DEFUN (no_area_filter_list, } -DEFUN (area_authentication_message_digest, - area_authentication_message_digest_cmd, +DEFUN (ospf_area_authentication_message_digest, + ospf_area_authentication_message_digest_cmd, "area (A.B.C.D|<0-4294967295>) authentication message-digest", "OSPF area parameters\n" "Enable authentication\n" @@ -1898,8 +1898,8 @@ DEFUN (area_authentication_message_digest, return CMD_SUCCESS; } -DEFUN (area_authentication, - area_authentication_cmd, +DEFUN (ospf_area_authentication, + ospf_area_authentication_cmd, "area (A.B.C.D|<0-4294967295>) authentication", "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -1919,8 +1919,8 @@ DEFUN (area_authentication, return CMD_SUCCESS; } -DEFUN (no_area_authentication, - no_area_authentication_cmd, +DEFUN (no_ospf_area_authentication, + no_ospf_area_authentication_cmd, "no area (A.B.C.D|<0-4294967295>) authentication", NO_STR "OSPF area parameters\n" @@ -2059,8 +2059,8 @@ ALIAS (no_ospf_compatible_rfc1583, "OSPF specific commands\n" "Disable the RFC1583Compatibility flag\n") -DEFUN (timers_spf, - timers_spf_cmd, +DEFUN (ospf_timers_spf, + ospf_timers_spf_cmd, "timers spf <0-4294967295> <0-4294967295>", "Adjust routing timers\n" "OSPF SPF timers\n" @@ -2078,8 +2078,8 @@ DEFUN (timers_spf, return CMD_SUCCESS; } -DEFUN (no_timers_spf, - no_timers_spf_cmd, +DEFUN (no_ospf_timers_spf, + no_ospf_timers_spf_cmd, "no timers spf", NO_STR "Adjust routing timers\n" @@ -2094,8 +2094,8 @@ DEFUN (no_timers_spf, } -DEFUN (neighbor, - neighbor_cmd, +DEFUN (ospf_neighbor, + ospf_neighbor_cmd, "neighbor A.B.C.D", NEIGHBOR_STR "Neighbor IP address\n") @@ -2122,8 +2122,8 @@ DEFUN (neighbor, return CMD_SUCCESS; } -ALIAS (neighbor, - neighbor_priority_poll_interval_cmd, +ALIAS (ospf_neighbor, + ospf_neighbor_priority_poll_interval_cmd, "neighbor A.B.C.D priority <0-255> poll-interval <1-65535>", NEIGHBOR_STR "Neighbor IP address\n" @@ -2132,16 +2132,16 @@ ALIAS (neighbor, "Dead Neighbor Polling interval\n" "Seconds\n") -ALIAS (neighbor, - neighbor_priority_cmd, +ALIAS (ospf_neighbor, + ospf_neighbor_priority_cmd, "neighbor A.B.C.D priority <0-255>", NEIGHBOR_STR "Neighbor IP address\n" "Neighbor Priority\n" "Seconds\n") -DEFUN (neighbor_poll_interval, - neighbor_poll_interval_cmd, +DEFUN (ospf_neighbor_poll_interval, + ospf_neighbor_poll_interval_cmd, "neighbor A.B.C.D poll-interval <1-65535>", NEIGHBOR_STR "Neighbor IP address\n" @@ -2170,8 +2170,8 @@ DEFUN (neighbor_poll_interval, return CMD_SUCCESS; } -ALIAS (neighbor_poll_interval, - neighbor_poll_interval_priority_cmd, +ALIAS (ospf_neighbor_poll_interval, + ospf_neighbor_poll_interval_priority_cmd, "neighbor A.B.C.D poll-interval <1-65535> priority <0-255>", NEIGHBOR_STR "Neighbor address\n" @@ -2180,8 +2180,8 @@ ALIAS (neighbor_poll_interval, "OSPF priority of non-broadcast neighbor\n" "Priority\n") -DEFUN (no_neighbor, - no_neighbor_cmd, +DEFUN (no_ospf_neighbor, + no_ospf_neighbor_cmd, "no neighbor A.B.C.D", NO_STR NEIGHBOR_STR @@ -2198,8 +2198,8 @@ DEFUN (no_neighbor, return CMD_SUCCESS; } -ALIAS (no_neighbor, - no_neighbor_priority_cmd, +ALIAS (no_ospf_neighbor, + no_ospf_neighbor_priority_cmd, "no neighbor A.B.C.D priority <0-255>", NO_STR NEIGHBOR_STR @@ -2207,8 +2207,8 @@ ALIAS (no_neighbor, "Neighbor Priority\n" "Priority\n") -ALIAS (no_neighbor, - no_neighbor_poll_interval_cmd, +ALIAS (no_ospf_neighbor, + no_ospf_neighbor_poll_interval_cmd, "no neighbor A.B.C.D poll-interval <1-65535>", NO_STR NEIGHBOR_STR @@ -2216,8 +2216,8 @@ ALIAS (no_neighbor, "Dead Neighbor Polling interval\n" "Seconds\n") -ALIAS (no_neighbor, - no_neighbor_priority_pollinterval_cmd, +ALIAS (no_ospf_neighbor, + no_ospf_neighbor_priority_pollinterval_cmd, "no neighbor A.B.C.D priority <0-255> poll-interval <1-65535>", NO_STR NEIGHBOR_STR @@ -2228,7 +2228,7 @@ ALIAS (no_neighbor, "Seconds\n") -DEFUN (refresh_timer, refresh_timer_cmd, +DEFUN (ospf_refresh_timer, ospf_refresh_timer_cmd, "refresh timer <10-1800>", "Adjust refresh parameters\n" "Set refresh timer\n" @@ -2245,7 +2245,7 @@ DEFUN (refresh_timer, refresh_timer_cmd, return CMD_SUCCESS; } -DEFUN (no_refresh_timer, no_refresh_timer_val_cmd, +DEFUN (no_ospf_refresh_timer, no_ospf_refresh_timer_val_cmd, "no refresh timer <10-1800>", "Adjust refresh parameters\n" "Unset refresh timer\n" @@ -2268,14 +2268,14 @@ DEFUN (no_refresh_timer, no_refresh_timer_val_cmd, return CMD_SUCCESS; } -ALIAS (no_refresh_timer, - no_refresh_timer_cmd, +ALIAS (no_ospf_refresh_timer, + no_ospf_refresh_timer_cmd, "no refresh timer", "Adjust refresh parameters\n" "Unset refresh timer\n") -DEFUN (auto_cost_reference_bandwidth, - auto_cost_reference_bandwidth_cmd, +DEFUN (ospf_auto_cost_reference_bandwidth, + ospf_auto_cost_reference_bandwidth_cmd, "auto-cost reference-bandwidth <1-4294967>", "Calculate OSPF interface cost according to bandwidth\n" "Use reference bandwidth method to assign OSPF cost\n" @@ -2306,8 +2306,8 @@ DEFUN (auto_cost_reference_bandwidth, return CMD_SUCCESS; } -DEFUN (no_auto_cost_reference_bandwidth, - no_auto_cost_reference_bandwidth_cmd, +DEFUN (no_ospf_auto_cost_reference_bandwidth, + no_ospf_auto_cost_reference_bandwidth_cmd, "no auto-cost reference-bandwidth", NO_STR "Calculate OSPF interface cost according to bandwidth\n" @@ -2513,12 +2513,11 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, oi_count = ospf_oi_count (ifp); /* Is interface up? */ - if (if_is_up (ifp)) - vty_out (vty, "%s is up, line protocol is up%s", ifp->name, VTY_NEWLINE); - else - { - vty_out (vty, "%s is down, line protocol is down%s", ifp->name, - VTY_NEWLINE); + if (if_is_operative (ifp)) { + vty_out (vty, "%s is up%s", ifp->name, VTY_NEWLINE); + } else + { + vty_out (vty, "%s is down%s", ifp->name, VTY_NEWLINE); if (oi_count == 0) @@ -3101,6 +3100,9 @@ show_lsa_summary (struct vty *vty, struct ospf_lsa *lsa, int self) vty_out (vty, " %s/%d", inet_ntoa (p.prefix), p.prefixlen); break; case OSPF_AS_EXTERNAL_LSA: +#ifdef HAVE_NSSA + case OSPF_AS_NSSA_LSA: +#endif /* HAVE_NSSA */ asel = (struct as_external_lsa *) lsa->data; p.family = AF_INET; @@ -7375,6 +7377,7 @@ ospf_vty_if_init () install_node (&interface_node, config_write_interface); install_element (CONFIG_NODE, &interface_cmd); + install_element (CONFIG_NODE, &no_interface_cmd); install_default (INTERFACE_NODE); /* "description" commands. */ @@ -7583,14 +7586,14 @@ ospf_vty_init () /* "ospf router-id" commands. */ install_element (OSPF_NODE, &ospf_router_id_cmd); install_element (OSPF_NODE, &no_ospf_router_id_cmd); - install_element (OSPF_NODE, &router_id_cmd); - install_element (OSPF_NODE, &no_router_id_cmd); + install_element (OSPF_NODE, &router_ospf_id_cmd); + install_element (OSPF_NODE, &no_router_ospf_id_cmd); /* "passive-interface" commands. */ - install_element (OSPF_NODE, &passive_interface_addr_cmd); - install_element (OSPF_NODE, &passive_interface_cmd); - install_element (OSPF_NODE, &no_passive_interface_addr_cmd); - install_element (OSPF_NODE, &no_passive_interface_cmd); + install_element (OSPF_NODE, &ospf_passive_interface_addr_cmd); + install_element (OSPF_NODE, &ospf_passive_interface_cmd); + install_element (OSPF_NODE, &no_ospf_passive_interface_addr_cmd); + install_element (OSPF_NODE, &no_ospf_passive_interface_cmd); /* "ospf abr-type" commands. */ install_element (OSPF_NODE, &ospf_abr_type_cmd); @@ -7603,111 +7606,111 @@ ospf_vty_init () install_element (OSPF_NODE, &no_ospf_compatible_rfc1583_cmd); /* "network area" commands. */ - install_element (OSPF_NODE, &network_area_cmd); - install_element (OSPF_NODE, &no_network_area_cmd); + install_element (OSPF_NODE, &ospf_network_area_cmd); + install_element (OSPF_NODE, &no_ospf_network_area_cmd); /* "area authentication" commands. */ - install_element (OSPF_NODE, &area_authentication_message_digest_cmd); - install_element (OSPF_NODE, &area_authentication_cmd); - install_element (OSPF_NODE, &no_area_authentication_cmd); + install_element (OSPF_NODE, &ospf_area_authentication_message_digest_cmd); + install_element (OSPF_NODE, &ospf_area_authentication_cmd); + install_element (OSPF_NODE, &no_ospf_area_authentication_cmd); /* "area range" commands. */ - install_element (OSPF_NODE, &area_range_cmd); - install_element (OSPF_NODE, &area_range_advertise_cmd); - install_element (OSPF_NODE, &area_range_cost_cmd); - install_element (OSPF_NODE, &area_range_advertise_cost_cmd); - install_element (OSPF_NODE, &area_range_not_advertise_cmd); - install_element (OSPF_NODE, &no_area_range_cmd); - install_element (OSPF_NODE, &no_area_range_advertise_cmd); - install_element (OSPF_NODE, &no_area_range_cost_cmd); - install_element (OSPF_NODE, &no_area_range_advertise_cost_cmd); - install_element (OSPF_NODE, &area_range_substitute_cmd); - install_element (OSPF_NODE, &no_area_range_substitute_cmd); + install_element (OSPF_NODE, &ospf_area_range_cmd); + install_element (OSPF_NODE, &ospf_area_range_advertise_cmd); + install_element (OSPF_NODE, &ospf_area_range_cost_cmd); + install_element (OSPF_NODE, &ospf_area_range_advertise_cost_cmd); + install_element (OSPF_NODE, &ospf_area_range_not_advertise_cmd); + install_element (OSPF_NODE, &no_ospf_area_range_cmd); + install_element (OSPF_NODE, &no_ospf_area_range_advertise_cmd); + install_element (OSPF_NODE, &no_ospf_area_range_cost_cmd); + install_element (OSPF_NODE, &no_ospf_area_range_advertise_cost_cmd); + install_element (OSPF_NODE, &ospf_area_range_substitute_cmd); + install_element (OSPF_NODE, &no_ospf_area_range_substitute_cmd); /* "area virtual-link" commands. */ - install_element (OSPF_NODE, &area_vlink_cmd); - install_element (OSPF_NODE, &no_area_vlink_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_cmd); - install_element (OSPF_NODE, &area_vlink_param1_cmd); - install_element (OSPF_NODE, &no_area_vlink_param1_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_param1_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_param1_cmd); - install_element (OSPF_NODE, &area_vlink_param2_cmd); - install_element (OSPF_NODE, &no_area_vlink_param2_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_param2_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_param2_cmd); - install_element (OSPF_NODE, &area_vlink_param3_cmd); - install_element (OSPF_NODE, &no_area_vlink_param3_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_param3_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_param3_cmd); - install_element (OSPF_NODE, &area_vlink_param4_cmd); - install_element (OSPF_NODE, &no_area_vlink_param4_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_param4_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_param4_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_args_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_cmd); - install_element (OSPF_NODE, &no_area_vlink_authtype_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_cmd); - install_element (OSPF_NODE, &area_vlink_md5_cmd); - install_element (OSPF_NODE, &no_area_vlink_md5_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_md5_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_md5_cmd); - install_element (OSPF_NODE, &area_vlink_authkey_cmd); - install_element (OSPF_NODE, &no_area_vlink_authkey_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authkey_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_authkey_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_args_authkey_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_authkey_cmd); - install_element (OSPF_NODE, &no_area_vlink_authtype_authkey_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_authkey_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_authkey_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_authkey_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_args_md5_cmd); - install_element (OSPF_NODE, &area_vlink_authtype_md5_cmd); - install_element (OSPF_NODE, &no_area_vlink_authtype_md5_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_md5_cmd); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_md5_cmd); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_md5_cmd); /* "area stub" commands. */ - install_element (OSPF_NODE, &area_stub_no_summary_cmd); - install_element (OSPF_NODE, &area_stub_cmd); - install_element (OSPF_NODE, &no_area_stub_no_summary_cmd); - install_element (OSPF_NODE, &no_area_stub_cmd); + install_element (OSPF_NODE, &ospf_area_stub_no_summary_cmd); + install_element (OSPF_NODE, &ospf_area_stub_cmd); + install_element (OSPF_NODE, &no_ospf_area_stub_no_summary_cmd); + install_element (OSPF_NODE, &no_ospf_area_stub_cmd); #ifdef HAVE_NSSA /* "area nssa" commands. */ - install_element (OSPF_NODE, &area_nssa_cmd); - install_element (OSPF_NODE, &area_nssa_translate_no_summary_cmd); - install_element (OSPF_NODE, &area_nssa_translate_cmd); - install_element (OSPF_NODE, &area_nssa_no_summary_cmd); - install_element (OSPF_NODE, &no_area_nssa_cmd); - install_element (OSPF_NODE, &no_area_nssa_no_summary_cmd); + install_element (OSPF_NODE, &ospf_area_nssa_cmd); + install_element (OSPF_NODE, &ospf_area_nssa_translate_no_summary_cmd); + install_element (OSPF_NODE, &ospf_area_nssa_translate_cmd); + install_element (OSPF_NODE, &ospf_area_nssa_no_summary_cmd); + install_element (OSPF_NODE, &no_ospf_area_nssa_cmd); + install_element (OSPF_NODE, &no_ospf_area_nssa_no_summary_cmd); #endif /* HAVE_NSSA */ - install_element (OSPF_NODE, &area_default_cost_cmd); - install_element (OSPF_NODE, &no_area_default_cost_cmd); + install_element (OSPF_NODE, &ospf_area_default_cost_cmd); + install_element (OSPF_NODE, &no_ospf_area_default_cost_cmd); - install_element (OSPF_NODE, &area_shortcut_cmd); - install_element (OSPF_NODE, &no_area_shortcut_cmd); + install_element (OSPF_NODE, &ospf_area_shortcut_cmd); + install_element (OSPF_NODE, &no_ospf_area_shortcut_cmd); - install_element (OSPF_NODE, &area_export_list_cmd); - install_element (OSPF_NODE, &no_area_export_list_cmd); + install_element (OSPF_NODE, &ospf_area_export_list_cmd); + install_element (OSPF_NODE, &no_ospf_area_export_list_cmd); - install_element (OSPF_NODE, &area_filter_list_cmd); - install_element (OSPF_NODE, &no_area_filter_list_cmd); + install_element (OSPF_NODE, &ospf_area_filter_list_cmd); + install_element (OSPF_NODE, &no_ospf_area_filter_list_cmd); - install_element (OSPF_NODE, &area_import_list_cmd); - install_element (OSPF_NODE, &no_area_import_list_cmd); + install_element (OSPF_NODE, &ospf_area_import_list_cmd); + install_element (OSPF_NODE, &no_ospf_area_import_list_cmd); - install_element (OSPF_NODE, &timers_spf_cmd); - install_element (OSPF_NODE, &no_timers_spf_cmd); + install_element (OSPF_NODE, &ospf_timers_spf_cmd); + install_element (OSPF_NODE, &no_ospf_timers_spf_cmd); - install_element (OSPF_NODE, &refresh_timer_cmd); - install_element (OSPF_NODE, &no_refresh_timer_val_cmd); - install_element (OSPF_NODE, &no_refresh_timer_cmd); + install_element (OSPF_NODE, &ospf_refresh_timer_cmd); + install_element (OSPF_NODE, &no_ospf_refresh_timer_val_cmd); + install_element (OSPF_NODE, &no_ospf_refresh_timer_cmd); - install_element (OSPF_NODE, &auto_cost_reference_bandwidth_cmd); - install_element (OSPF_NODE, &no_auto_cost_reference_bandwidth_cmd); + install_element (OSPF_NODE, &ospf_auto_cost_reference_bandwidth_cmd); + install_element (OSPF_NODE, &no_ospf_auto_cost_reference_bandwidth_cmd); /* "neighbor" commands. */ - install_element (OSPF_NODE, &neighbor_cmd); - install_element (OSPF_NODE, &neighbor_priority_poll_interval_cmd); - install_element (OSPF_NODE, &neighbor_priority_cmd); - install_element (OSPF_NODE, &neighbor_poll_interval_cmd); - install_element (OSPF_NODE, &neighbor_poll_interval_priority_cmd); - install_element (OSPF_NODE, &no_neighbor_cmd); - install_element (OSPF_NODE, &no_neighbor_priority_cmd); - install_element (OSPF_NODE, &no_neighbor_poll_interval_cmd); + install_element (OSPF_NODE, &ospf_neighbor_cmd); + install_element (OSPF_NODE, &ospf_neighbor_priority_poll_interval_cmd); + install_element (OSPF_NODE, &ospf_neighbor_priority_cmd); + install_element (OSPF_NODE, &ospf_neighbor_poll_interval_cmd); + install_element (OSPF_NODE, &ospf_neighbor_poll_interval_priority_cmd); + install_element (OSPF_NODE, &no_ospf_neighbor_cmd); + install_element (OSPF_NODE, &no_ospf_neighbor_priority_cmd); + install_element (OSPF_NODE, &no_ospf_neighbor_poll_interval_cmd); /* Init interface related vty commands. */ ospf_vty_if_init (); diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index 833dd706..bdb0c0f5 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -67,6 +67,8 @@ ospf_interface_add (int command, struct zclient *zclient, zebra_size_t length) zlog_info ("Zebra: interface add %s index %d flags %ld metric %d mtu %d", ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu); + assert(ifp->info); + if (!OSPF_IF_PARAM_CONFIGURED (IF_DEF_PARAMS (ifp), type)) { SET_IF_PARAM (IF_DEF_PARAMS (ifp), type); @@ -157,6 +159,7 @@ zebra_interface_if_set_value (struct stream *s, struct interface *ifp) ifp->ifindex = stream_getl (s); /* Read interface's value. */ + ifp->status = stream_getc (s); ifp->flags = stream_getl (s); ifp->metric = stream_getl (s); ifp->mtu = stream_getl (s); @@ -178,7 +181,7 @@ ospf_interface_state_up (int command, struct zclient *zclient, return 0; /* Interface is already up. */ - if (if_is_up (ifp)) + if (if_is_operative (ifp)) { /* Temporarily keep ifp values. */ memcpy (&if_tmp, ifp, sizeof (struct interface)); diff --git a/ospfd/ospf_zebra.h b/ospfd/ospf_zebra.h index 6e91f042..5dbf5739 100644 --- a/ospfd/ospf_zebra.h +++ b/ospfd/ospf_zebra.h @@ -50,26 +50,28 @@ void ospf_zebra_delete_discard (struct prefix_ipv4 *); int ospf_default_originate_timer (struct thread *); -int ospf_redistribute_check (struct ospf *, struct external_info *, int *); -int ospf_distribute_check_connected (struct ospf *, struct external_info *); -void ospf_distribute_list_update (struct ospf *, int); +int ospf_redistribute_check (struct external_info *, int *); +int ospf_distribute_check_connected (struct external_info *); +void ospf_distribute_list_update (int); int ospf_is_type_redistributed (int); -void ospf_distance_reset (struct ospf *); +int ospf_redistribute_unset (int); + +void ospf_distance_reset (); u_char ospf_distance_apply (struct prefix_ipv4 *, struct ospf_route *); struct vty; -int ospf_redistribute_set (struct ospf *, int, int, int); -int ospf_redistribute_unset (struct ospf *, int); -int ospf_redistribute_default_set (struct ospf *, int, int, int); -int ospf_redistribute_default_unset (struct ospf *); -int ospf_distribute_list_out_set (struct ospf *, int, char *); -int ospf_distribute_list_out_unset (struct ospf *, int, char *); -void ospf_routemap_set (struct ospf *, int, char *); -void ospf_routemap_unset (struct ospf *, int); -int ospf_distance_set (struct vty *, struct ospf *, char *, char *, char *); -int ospf_distance_unset (struct vty *, struct ospf *, char *, char *, char *); +int ospf_redistribute_set (int, int, int); +int ospf_redistribute_unset (int); +int ospf_redistribute_default_set (int, int, int); +int ospf_redistribute_default_unset (); +int ospf_distribute_list_out_set (int, char *); +int ospf_distribute_list_out_unset (int, char *); +void ospf_routemap_set (int, char *); +void ospf_routemap_unset (int); +int ospf_distance_set (struct vty *, char *, char *, char *); +int ospf_distance_unset (struct vty *, char *, char *, char *); void ospf_zebra_init (); #endif /* _ZEBRA_OSPF_ZEBRA_H */ diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index a12a0115..d8646f07 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -53,7 +53,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "ospfd/ospf_ase.h" - /* OSPF process wide configuration. */ static struct ospf_master ospf_master; diff --git a/init/redhat/bgpd.init b/redhat/bgpd.init index 91d2aebb..d7c2e3fe 100644 --- a/init/redhat/bgpd.init +++ b/redhat/bgpd.init @@ -4,41 +4,56 @@ # description: A BGPv4, BGPv4+, BGPv4- routing engine for use with Zebra # # processname: bgpd -# config: /etc/bgpd.conf +# config: /etc/zebra/bgpd.conf # source function library . /etc/rc.d/init.d/functions -RETVAL=0 +# Get network config +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/bgpd.conf ] || exit 0 -[ -f /etc/bgpd.conf ] || exit 0 +RETVAL=0 +prog="bgpd" case "$1" in start) - echo -n "Starting bgpd: " + echo -n $"Starting $prog: " daemon /usr/sbin/bgpd -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/bgpd echo ;; stop) - echo -n "Shutting down bgpd: " + echo -n $"Shutting down $prog: " killproc bgpd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/bgpd echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/bgpd ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status bgpd RETVAL=$? ;; *) - echo "Usage: bgpd {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/init/redhat/ospf6d.init b/redhat/ospf6d.init index 4d89f8a2..9a6e8c51 100644 --- a/init/redhat/ospf6d.init +++ b/redhat/ospf6d.init @@ -4,41 +4,56 @@ # description: An OSPF routing engine for use with Zebra and IPv6 # # processname: ospf6d -# config: /etc/ospf6d.conf +# config: /etc/zebra/ospf6d.conf # source function library . /etc/rc.d/init.d/functions -RETVAL=0 +# Get network config +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING_IPV6}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/ospf6d.conf ] || exit 0 -[ -f /etc/ospf6d.conf ] || exit 0 +RETVAL=0 +prog="ospf6d" case "$1" in start) - echo -n "Starting ospf6d: " + echo -n $"Starting $prog: " daemon /usr/sbin/ospf6d -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ospf6d echo ;; stop) - echo -n "Shutting down ospf6d: " + echo -n $"Shutting down $prog: " killproc ospf6d RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ospf6d echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/ospf6d ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status ospf6d RETVAL=$? ;; *) - echo "Usage: ospf6d {start|stop|restart|status}" + echo $"Usage: $prog {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/init/redhat/ospfd.init b/redhat/ospfd.init index d7453b6e..4aab1388 100644 --- a/init/redhat/ospfd.init +++ b/redhat/ospfd.init @@ -4,41 +4,57 @@ # description: An OSPF v2 routing engine for use with Zebra # # processname: ospfd -# config: /etc/ospfd.conf +# config: /etc/zebra/ospfd.conf # source function library . /etc/rc.d/init.d/functions +# Get network config +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/ospfd.conf ] || exit 0 + RETVAL=0 -[ -f /etc/ospfd.conf ] || exit 0 +prog="ospfd" case "$1" in start) - echo -n "Starting ospfd: " + echo -n $"Starting $prog: " daemon /usr/sbin/ospfd -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ospfd echo ;; stop) - echo -n "Shutting down ospfd: " + echo -n $"Shutting down $prog: " killproc ospfd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ospfd echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/ospfd ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status ospfd RETVAL=$? ;; *) - echo "Usage: ospfd {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/init/redhat/ripd.init b/redhat/ripd.init index d87f498d..2ac67337 100644 --- a/init/redhat/ripd.init +++ b/redhat/ripd.init @@ -4,41 +4,56 @@ # description: A RIP routing engine for use with Zebra # # processname: ripd -# config: /etc/ripd.conf +# config: /etc/zebra/ripd.conf # source function library . /etc/rc.d/init.d/functions -RETVAL=0 +# Get network config +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/ripd.conf ] || exit 0 -[ -f /etc/ripd.conf ] || exit 0 +RETVAL=0 +prog="ripd" case "$1" in start) - echo -n "Starting ripd: " + echo -n $"Starting $prog: " daemon /usr/sbin/ripd -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ripd echo ;; stop) - echo -n "Shutting down ripd: " + echo -n $"Shutting down $prog: " killproc ripd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ripd echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/ripd ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status ripd RETVAL=$? ;; *) - echo "Usage: ripd {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/init/redhat/ripngd.init b/redhat/ripngd.init index 26c153bf..be54a013 100644 --- a/init/redhat/ripngd.init +++ b/redhat/ripngd.init @@ -4,41 +4,56 @@ # description: A RIP routing engine for use with Zebra and IPv6 # # processname: ripngd -# config: /etc/ripngd.conf +# config: /etc/zebra/ripngd.conf # source function library . /etc/rc.d/init.d/functions -RETVAL=0 +# Get network config +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING_IPV6}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/ripngd.conf ] || exit 0 -[ -f /etc/ripngd.conf ] || exit 0 +RETVAL=0 +prog="ripngd" case "$1" in start) - echo -n "Starting ripngd: " + echo -n $"Starting $prog: " daemon /usr/sbin/ripngd -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ripngd echo ;; stop) - echo -n "Shutting down ripngd: " + echo -n $"Shutting down $prog: " killproc ripngd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ripngd echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/ripngd ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status ripngd RETVAL=$? ;; *) - echo "Usage: ripngd {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/init/redhat/zebra.init b/redhat/zebra.init index b09918ad..5a450e21 100644 --- a/init/redhat/zebra.init +++ b/redhat/zebra.init @@ -4,41 +4,57 @@ # description: GNU Zebra routing manager # # processname: zebra -# config: /etc/zebra.conf +# config: /etc/zebra/zebra.conf # source function library . /etc/rc.d/init.d/functions +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 0 + +# The process must be configured first. +[ -f /etc/zebra/zebra.conf ] || exit 0 + RETVAL=0 -[ -f /etc/zebra.conf ] || exit 0 +prog="zebra" case "$1" in start) - echo -n "Starting zebra: " + echo -n $"Starting $prog: " + + /sbin/ip route flush proto zebra + daemon /usr/sbin/zebra -d RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zebra echo ;; stop) - echo -n "Shutting down zebra: " + echo -n $"Shutting down $prog: " killproc zebra RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zebra echo ;; - restart) + restart|reload) $0 stop $0 start RETVAL=$? ;; + condrestart) + if [ -f /var/lock/subsys/zebra ]; then + $0 stop + $0 start + fi + RETVAL=$? + ;; status) status zebra RETVAL=$? ;; *) - echo "Usage: zebra {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/redhat/zebra.logrotate b/redhat/zebra.logrotate new file mode 100644 index 00000000..2e352ff6 --- /dev/null +++ b/redhat/zebra.logrotate @@ -0,0 +1,59 @@ +/var/log/zebra/zebra.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 zebra + endscript +} + +/var/log/zebra/bgpd.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 bgpd + endscript +} + +/var/log/zebra/ospfd.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 ospfd + endscript +} + +/var/log/zebra/ospf6d.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 ospf6d + endscript +} + +/var/log/zebra/ripd.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 ripd + endscript +} + +/var/log/zebra/ripngd.log { + notifempty + missingok + nocompress + weekly + postrotate + /usr/sbin/killall -USR1 ripngd + endscript +} diff --git a/redhat/zebra.pam b/redhat/zebra.pam index 1390edf4..fb17f59e 100644 --- a/redhat/zebra.pam +++ b/redhat/zebra.pam @@ -1,26 +1,10 @@ #%PAM-1.0 # - -##### if running zebra as root: # Only allow root (and possibly wheel) to use this because enable access # is unrestricted. -# auth sufficient /lib/security/pam_rootok.so +auth sufficient /lib/security/pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient /lib/security/pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required /lib/security/pam_wheel.so use_uid -########################################################### - -# If using zebra privileges and with a seperate group for vty access, then -# access can be controlled via the vty access group, and pam can simply -# check for valid user/password -# -# only allow local users. -auth required /lib/security/pam_securetty.so -auth required /lib/security/pam_stack.so service=system-auth -auth required /lib/security/pam_nologin.so -account required /lib/security/pam_stack.so service=system-auth -password required /lib/security/pam_stack.so service=system-auth -session required /lib/security/pam_stack.so service=system-auth -session optional /lib/security/pam_console.so diff --git a/redhat/zebra.spec.in b/redhat/zebra.spec.in index 85b3b318..ce3a6fb4 100644 --- a/redhat/zebra.spec.in +++ b/redhat/zebra.spec.in @@ -1,4 +1,4 @@ -# configure options +# conditionals %define with_snmp 0 %define with_vtysh 1 %define with_ospf_te 1 @@ -11,8 +11,6 @@ %define with_ospfclient 1 %define with_ospfapi 1 %define with_multipath 64 -%define zebra_user zebra -%define vty_group zebravty # path defines %define _sysconfdir /etc/zebra @@ -24,12 +22,12 @@ %define _libexecdir %{_exec_prefix}/libexec/zebra %define _includedir %{_prefix}/include/zebra %define _libdir %{_exec_prefix}/%{_lib}/zebra -%define _localstatedir /var/run/zebra +%define _localstatedir %{_prefix}/var/run Summary: Routing daemon Name: zebra Version: @VERSION@ -Release: @CONFDATE@01 +Release: @CONFDATE@ License: GPL Group: System Environment/Daemons Source0: ftp://ftp.zebra.org/pub/zebra/%{name}-%{version}.tar.gz @@ -82,7 +80,10 @@ developing OSPF-API and zebra applications. %setup -q %build +./update-autotools %configure \ + --with-cflags="-O2" \ + --enable-netlink \ %if %with_ipv6 --enable-ipv6 \ %endif @@ -118,17 +119,12 @@ developing OSPF-API and zebra applications. --enable-ospfapi=no \ %endif %if %with_pam - --with-libpam \ + --with-libpam %endif -%if %zebra_user - --enable-user=%zebra_user \ - --enable-group=%zebra_user \ -%endif -%if %vty_group - --enable-vty-group=%vty_group \ -%endif ---with-cflags="-O2" \ ---enable-netlink + +pushd vtysh +make %{?_smp_mflags} rebuild +popd make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" @@ -155,18 +151,6 @@ install %{zeb_rh_src}/ospfd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ospfd install %{zeb_rh_src}/ripd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ripd install -m644 %{zeb_rh_src}/zebra.pam $RPM_BUILD_ROOT/etc/pam.d/zebra install -m644 %{zeb_rh_src}/zebra.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/zebra -install -d -m750 $RPM_BUILD_ROOT/var/run/zebra - -%pre -# add vty_group -%if %vty_group -groupadd -r %vty_group 2> /dev/null || : -%endif -# add zebra user and group -%if %zebra_user -/usr/sbin/useradd -M -r -s /bin/false -c "Zebra routing suite" \ - -d %_localstatedir %zebra_user 2> /dev/null || : -%endif %post # zebra_spec_add_service <service name> <port/proto> <comment> @@ -251,19 +235,9 @@ fi %doc doc/zebra.html %doc doc/mpls %doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO -%if %zebra_user -%dir %attr(751,%zebra_user,%zebra_user) %{_sysconfdir} -%dir %attr(750,%zebra_user,%zebra_user) /var/log/zebra -%dir %attr(751,%zebra_user,%zebra_user) /var/run/zebra -%else %dir %attr(750,root,root) %{_sysconfdir} %dir %attr(750,root,root) /var/log/zebra %dir %attr(755,root,root) /usr/share/info -%dir %attr(750,root,root) /var/run/zebra -%endif -%if %vty_group -%attr(750,%zebra_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample -%endif %{_infodir}/*info* %{_mandir}/man*/* %{_sbindir}/* @@ -288,9 +262,6 @@ fi %endif %changelog -* Tue Mar 20 2003 Paul Jakma <paul@dishone.st> -- zebra privileges support - * Mon Mar 18 2003 Paul Jakma <paul@dishone.st> - Fix mem leak in 'show thread cpu' - Ralph Keller's OSPF-API diff --git a/ripd/.cvsignore b/ripd/.cvsignore index 1f91515a..7d4ff64f 100644 --- a/ripd/.cvsignore +++ b/ripd/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o ripd ripd.conf diff --git a/ripd/Makefile.am b/ripd/Makefile.am index 2c187e84..df9a0af5 100644 --- a/ripd/Makefile.am +++ b/ripd/Makefile.am @@ -17,7 +17,7 @@ noinst_HEADERS = \ ripd_SOURCES = \ rip_main.c $(librip_a_SOURCES) -ripd_LDADD = -L../lib -lzebra @LIBCAP@ +ripd_LDADD = -L../lib -lzebra sysconf_DATA = ripd.conf.sample diff --git a/ripd/Makefile.in b/ripd/Makefile.in deleted file mode 100644 index 2fe359ff..00000000 --- a/ripd/Makefile.in +++ /dev/null @@ -1,418 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -INSTALL_SDATA = @INSTALL@ -m 600 - -noinst_LIBRARIES = librip.a -sbin_PROGRAMS = ripd - -librip_a_SOURCES = \ - ripd.c rip_zebra.c rip_interface.c rip_debug.c rip_snmp.c \ - rip_routemap.c rip_peer.c rip_offset.c - - -noinst_HEADERS = \ - ripd.h rip_debug.h - - -ripd_SOURCES = \ - rip_main.c $(librip_a_SOURCES) - - -ripd_LDADD = ../lib/libzebra.a - -sysconf_DATA = ripd.conf.sample - -EXTRA_DIST = $(sysconf_DATA) RIPv2-MIB.txt -subdir = ripd -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -librip_a_AR = $(AR) cru -librip_a_LIBADD = -am_librip_a_OBJECTS = ripd.$(OBJEXT) rip_zebra.$(OBJEXT) \ - rip_interface.$(OBJEXT) rip_debug.$(OBJEXT) rip_snmp.$(OBJEXT) \ - rip_routemap.$(OBJEXT) rip_peer.$(OBJEXT) rip_offset.$(OBJEXT) -librip_a_OBJECTS = $(am_librip_a_OBJECTS) -sbin_PROGRAMS = ripd$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am__objects_1 = ripd.$(OBJEXT) rip_zebra.$(OBJEXT) \ - rip_interface.$(OBJEXT) rip_debug.$(OBJEXT) rip_snmp.$(OBJEXT) \ - rip_routemap.$(OBJEXT) rip_peer.$(OBJEXT) rip_offset.$(OBJEXT) -am_ripd_OBJECTS = rip_main.$(OBJEXT) $(am__objects_1) -ripd_OBJECTS = $(am_ripd_OBJECTS) -ripd_DEPENDENCIES = ../lib/libzebra.a -ripd_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/rip_debug.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rip_interface.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rip_main.Po ./$(DEPDIR)/rip_offset.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rip_peer.Po ./$(DEPDIR)/rip_routemap.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rip_snmp.Po ./$(DEPDIR)/rip_zebra.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripd.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(librip_a_SOURCES) $(ripd_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(librip_a_SOURCES) $(ripd_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign ripd/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -librip.a: $(librip_a_OBJECTS) $(librip_a_DEPENDENCIES) - -rm -f librip.a - $(librip_a_AR) librip.a $(librip_a_OBJECTS) $(librip_a_LIBADD) - $(RANLIB) librip.a -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -ripd$(EXEEXT): $(ripd_OBJECTS) $(ripd_DEPENDENCIES) - @rm -f ripd$(EXEEXT) - $(LINK) $(ripd_LDFLAGS) $(ripd_OBJECTS) $(ripd_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_debug.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_interface.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_offset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_peer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_snmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rip_zebra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripd.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES clean-sbinPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES clean-sbinPROGRAMS distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-sbinPROGRAMS install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am uninstall-sbinPROGRAMS uninstall-sysconfDATA - - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index c3889295..8ec96ae1 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -34,7 +34,6 @@ #include "zclient.h" #include "filter.h" #include "sockopt.h" -#include "privs.h" #include "zebra/connected.h" @@ -57,8 +56,6 @@ struct message ri_version_msg[] = {0, NULL} }; -extern struct zebra_privs_t ripd_privs; - /* RIP enabled network vector. */ vector rip_enable_interface; @@ -180,9 +177,6 @@ rip_interface_multicast_set (int sock, struct interface *ifp) from.sin_len = sizeof (struct sockaddr_in); #endif /* HAVE_SIN_LEN */ - if (ripd_privs.change (ZPRIVS_RAISE)) - zlog_err ("rip_interface_multicast_set: could not raise privs"); - ret = bind (sock, (struct sockaddr *) & from, sizeof (struct sockaddr_in)); if (ret < 0) @@ -191,9 +185,6 @@ rip_interface_multicast_set (int sock, struct interface *ifp) return; } - if (ripd_privs.change (ZPRIVS_LOWER)) - zlog_err ("rip_interface_multicast_set: could not lower privs"); - return; } diff --git a/ripd/rip_main.c b/ripd/rip_main.c index 9526d7ae..5e560524 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -30,7 +30,6 @@ #include "filter.h" #include "keychain.h" #include "log.h" -#include "privs.h" #include "ripd/ripd.h" @@ -44,31 +43,10 @@ static struct option longopts[] = { "vty_addr", required_argument, NULL, 'A'}, { "vty_port", required_argument, NULL, 'P'}, { "retain", no_argument, NULL, 'r'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { 0 } }; -/* ripd privileges */ -zebra_capabilities_t _caps_p [] = -{ - ZCAP_RAW, - ZCAP_BIND -}; - -struct zebra_privs_t ripd_privs = -{ -#if defined(ZEBRA_USER) - .user = ZEBRA_USER, -#endif -#if defined ZEBRA_GROUP - .group = ZEBRA_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = 2, - .cap_num_i = 0 -}; - /* Configuration file and directory. */ char config_current[] = RIPD_DEFAULT_CONFIG; char config_default[] = SYSCONFDIR RIPD_DEFAULT_CONFIG; @@ -107,7 +85,6 @@ Daemon which manages RIP version 1 and 2.\n\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ -r, --retain When program terminates, retain added route by ripd.\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -212,7 +189,7 @@ main (int argc, char **argv) { int opt; - opt = getopt_long (argc, argv, "df:hA:P:u:rv", longopts, 0); + opt = getopt_long (argc, argv, "df:hA:P:rv", longopts, 0); if (opt == EOF) break; @@ -247,9 +224,6 @@ main (int argc, char **argv) case 'r': retain_mode = 1; break; - case 'u': - ripd_privs.group = ripd_privs.user = optarg; - break; case 'v': print_version (progname); exit (0); @@ -267,7 +241,6 @@ main (int argc, char **argv) master = thread_master_create (); /* Library initialization. */ - zprivs_init (&ripd_privs); signal_init (); cmd_init (1); vty_init (); diff --git a/ripd/rip_snmp.c b/ripd/rip_snmp.c index dc2b6212..5a5060fd 100644 --- a/ripd/rip_snmp.c +++ b/ripd/rip_snmp.c @@ -22,6 +22,9 @@ #include <zebra.h> #ifdef HAVE_SNMP +#ifdef HAVE_NETSNMP +#include <net-snmp/net-snmp-config.h> +#endif #include <asn1.h> #include <snmp.h> #include <snmp_impl.h> diff --git a/ripd/ripd.c b/ripd/ripd.c index a58406b4..c5d45536 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -37,13 +37,10 @@ #include "distribute.h" #include "md5-gnu.h" #include "keychain.h" -#include "privs.h" #include "ripd/ripd.h" #include "ripd/rip_debug.h" -extern struct zebra_privs_t ripd_privs; - /* RIP Structure. */ struct rip *rip = NULL; @@ -1887,17 +1884,13 @@ rip_create_socket () setsockopt_pktinfo (sock); #endif /* RIP_RECVMSG */ - if (ripd_privs.change (ZPRIVS_RAISE)) - zlog_err ("rip_create_socket: could not raise privs"); ret = bind (sock, (struct sockaddr *) & addr, sizeof (addr)); if (ret < 0) { perror ("bind"); return ret; } - if (ripd_privs.change (ZPRIVS_LOWER)) - zlog_err ("rip_create_socket: could not lower privs"); - + return sock; } diff --git a/ripngd/.cvsignore b/ripngd/.cvsignore index cd9e0832..7879c557 100644 --- a/ripngd/.cvsignore +++ b/ripngd/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o ripngd ripngd.conf diff --git a/ripngd/Makefile.am b/ripngd/Makefile.am index d9db576e..a6810649 100644 --- a/ripngd/Makefile.am +++ b/ripngd/Makefile.am @@ -17,7 +17,7 @@ noinst_HEADERS = \ ripngd_SOURCES = \ ripng_main.c $(libripng_a_SOURCES) -ripngd_LDADD = -L../lib -lzebra @LIBCAP@ +ripngd_LDADD = -L../lib -lzebra sysconf_DATA = ripngd.conf.sample diff --git a/ripngd/Makefile.in b/ripngd/Makefile.in deleted file mode 100644 index e430ad31..00000000 --- a/ripngd/Makefile.in +++ /dev/null @@ -1,416 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -INSTALL_SDATA = @INSTALL@ -m 600 - -noinst_LIBRARIES = libripng.a -sbin_PROGRAMS = ripngd - -libripng_a_SOURCES = \ - ripng_interface.c ripngd.c ripng_zebra.c ripng_route.c ripng_debug.c \ - ripng_routemap.c - - -noinst_HEADERS = \ - ripng_debug.h ripng_route.h ripngd.h - - -ripngd_SOURCES = \ - ripng_main.c $(libripng_a_SOURCES) - - -ripngd_LDADD = ../lib/libzebra.a - -sysconf_DATA = ripngd.conf.sample - -EXTRA_DIST = $(sysconf_DATA) -subdir = ripngd -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - -libripng_a_AR = $(AR) cru -libripng_a_LIBADD = -am_libripng_a_OBJECTS = ripng_interface.$(OBJEXT) ripngd.$(OBJEXT) \ - ripng_zebra.$(OBJEXT) ripng_route.$(OBJEXT) \ - ripng_debug.$(OBJEXT) ripng_routemap.$(OBJEXT) -libripng_a_OBJECTS = $(am_libripng_a_OBJECTS) -sbin_PROGRAMS = ripngd$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am__objects_1 = ripng_interface.$(OBJEXT) ripngd.$(OBJEXT) \ - ripng_zebra.$(OBJEXT) ripng_route.$(OBJEXT) \ - ripng_debug.$(OBJEXT) ripng_routemap.$(OBJEXT) -am_ripngd_OBJECTS = ripng_main.$(OBJEXT) $(am__objects_1) -ripngd_OBJECTS = $(am_ripngd_OBJECTS) -ripngd_DEPENDENCIES = ../lib/libzebra.a -ripngd_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ripng_debug.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripng_interface.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripng_main.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripng_route.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripng_routemap.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/ripng_zebra.Po ./$(DEPDIR)/ripngd.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(libripng_a_SOURCES) $(ripngd_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(libripng_a_SOURCES) $(ripngd_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign ripngd/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libripng.a: $(libripng_a_OBJECTS) $(libripng_a_DEPENDENCIES) - -rm -f libripng.a - $(libripng_a_AR) libripng.a $(libripng_a_OBJECTS) $(libripng_a_LIBADD) - $(RANLIB) libripng.a -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -ripngd$(EXEEXT): $(ripngd_OBJECTS) $(ripngd_DEPENDENCIES) - @rm -f ripngd$(EXEEXT) - $(LINK) $(ripngd_LDFLAGS) $(ripngd_OBJECTS) $(ripngd_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_debug.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_interface.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_route.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_routemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_zebra.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripngd.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES clean-sbinPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES clean-sbinPROGRAMS distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-sbinPROGRAMS install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-info-am uninstall-sbinPROGRAMS uninstall-sysconfDATA - - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c index bd1972a1..44c38762 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -32,7 +32,6 @@ #include "log.h" #include "prefix.h" #include "if.h" -#include "privs.h" #include "ripngd/ripngd.h" @@ -52,32 +51,10 @@ struct option longopts[] = { "vty_addr", required_argument, NULL, 'A'}, { "vty_port", required_argument, NULL, 'P'}, { "retain", no_argument, NULL, 'r'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { 0 } }; -/* ripngd privileges */ -zebra_capabilities_t _caps_p [] = -{ - ZCAP_RAW, - ZCAP_BIND -}; - -struct zebra_privs_t ripngd_privs = -{ -#if defined(ZEBRA_USER) - .user = ZEBRA_USER, -#endif -#if defined ZEBRA_GROUP - .group = ZEBRA_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = 2, - .cap_num_i = 0 -}; - - /* RIPngd program name */ /* Route retain mode flag. */ @@ -112,7 +89,6 @@ Daemon which manages RIPng.\n\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ -r, --retain When program terminates, retain added route by ripngd.\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -214,7 +190,7 @@ main (int argc, char **argv) { int opt; - opt = getopt_long (argc, argv, "dlf:hA:P:u:v", longopts, 0); + opt = getopt_long (argc, argv, "dlf:hA:P:v", longopts, 0); if (opt == EOF) break; @@ -252,9 +228,6 @@ main (int argc, char **argv) case 'r': retain_mode = 1; break; - case 'u': - ripngd_privs.group = ripngd_privs.user = optarg; - break; case 'v': print_version (progname); exit (0); @@ -271,7 +244,6 @@ main (int argc, char **argv) master = thread_master_create (); /* Library inits. */ - zprivs_init (&ripngd_privs); signal_init (); cmd_init (1); vty_init (); diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index df5f31cf..94a5efbc 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -34,7 +34,6 @@ #include "distribute.h" #include "plist.h" #include "routemap.h" -#include "privs.c" #include "if_rmap.h" #include "ripngd/ripngd.h" @@ -53,8 +52,6 @@ enum ripng_changed_route, }; -extern struct zebra_privs_t ripngd_privs; - /* Prototypes. */ void ripng_output_process (struct interface *, struct sockaddr_in6 *, int); @@ -156,19 +153,12 @@ ripng_make_socket (void) #endif /* SIN6_LEN */ ripaddr.sin6_port = htons (RIPNG_PORT_DEFAULT); - if (ripngd_privs.change (ZPRIVS_RAISE)) - zlog_err ("ripng_make_socket: could not raise privs"); - ret = bind (sock, (struct sockaddr *) &ripaddr, sizeof (ripaddr)); if (ret < 0) { zlog (NULL, LOG_ERR, "Can't bind ripng socket: %s.", strerror (errno)); return ret; } - - if (ripngd_privs.change (ZPRIVS_LOWER)) - zlog_err ("ripng_make_socket: could not lower privs"); - return sock; } @@ -1707,7 +1697,7 @@ ripng_output_process (struct interface *ifp, struct sockaddr_in6 *to, ret = route_map_apply (ripng->route_map[rinfo->type].map, (struct prefix *) p, RMAP_RIPNG, - &rinfo); + rinfo); if (ret == RMAP_DENYMATCH) { diff --git a/vtysh/.cvsignore b/vtysh/.cvsignore index a71b4c5f..a6e783a4 100644 --- a/vtysh/.cvsignore +++ b/vtysh/.cvsignore @@ -1,6 +1,8 @@ Makefile +Makefile.in *.o vtysh tags TAGS .deps +vtysh_cmd.c diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog index 5818d5c0..b80a5e3f 100644 --- a/vtysh/ChangeLog +++ b/vtysh/ChangeLog @@ -1,3 +1,20 @@ +2003-05-01 Sergiy Vyshnevetskiy <serg@vostok.net> + + vtysh.c: Program shouldn't terminate on pager execution failure + vtysh_user.c: configure support for openpam (freebsd5.0) + +2003-04-19 Hasso Tepper <hasso@estpak.ee> + + * extract.pl vtysh.c vtysh.h: sync daemon's route-map commands to + have same syntax + +2002-09-30 Paul Jakma <paulzebra@rs250.org> + + * vtysh.c: add 'write-config (integrated|daemon)' option + to specifiy whether write config commands should write + integrated Zebra.conf file and/or per daemon files. + Defaults to per daemon, unless this is turned off. + 2002-07-07 Kunihiro Ishiguro <kunihiro@ipinfusion.com> * zebra-0.93 released. diff --git a/vtysh/Makefile.am b/vtysh/Makefile.am index 7a21409f..89156f90 100644 --- a/vtysh/Makefile.am +++ b/vtysh/Makefile.am @@ -9,7 +9,7 @@ bin_PROGRAMS = vtysh vtysh_SOURCES = vtysh_main.c vtysh.c vtysh_cmd.c vtysh_user.c vtysh_config.c noinst_HEADERS = vtysh.h vtysh_user.h -vtysh_LDADD = ../lib/libzebra.a @LIBCAP@ +vtysh_LDADD = ../lib/libzebra.a sysconf_DATA = vtysh.conf.sample diff --git a/vtysh/Makefile.in b/vtysh/Makefile.in deleted file mode 100644 index 9a5180a7..00000000 --- a/vtysh/Makefile.in +++ /dev/null @@ -1,382 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" - -LIBS = @LIBS@ @CURSES@ @LIBPAM@ - -bin_PROGRAMS = vtysh - -vtysh_SOURCES = vtysh_main.c vtysh.c vtysh_cmd.c vtysh_user.c vtysh_config.c -noinst_HEADERS = vtysh.h vtysh_user.h -vtysh_LDADD = ../lib/libzebra.a - -sysconf_DATA = vtysh.conf.sample - -EXTRA_DIST = extract.pl vtysh.conf.sample -subdir = vtysh -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -bin_PROGRAMS = vtysh$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) - -am_vtysh_OBJECTS = vtysh_main.$(OBJEXT) vtysh.$(OBJEXT) \ - vtysh_cmd.$(OBJEXT) vtysh_user.$(OBJEXT) vtysh_config.$(OBJEXT) -vtysh_OBJECTS = $(am_vtysh_OBJECTS) -vtysh_DEPENDENCIES = ../lib/libzebra.a -vtysh_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/vtysh.Po ./$(DEPDIR)/vtysh_cmd.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/vtysh_config.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/vtysh_main.Po ./$(DEPDIR)/vtysh_user.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(vtysh_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(vtysh_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign vtysh/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -vtysh$(EXEEXT): $(vtysh_OBJECTS) $(vtysh_DEPENDENCIES) - @rm -f vtysh$(EXEEXT) - $(LINK) $(vtysh_LDFLAGS) $(vtysh_OBJECTS) $(vtysh_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtysh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtysh_cmd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtysh_config.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtysh_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtysh_user.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \ - $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \ - done - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic distclean distclean-compile distclean-depend \ - distclean-generic distclean-tags distdir dvi dvi-am info \ - info-am install install-am install-binPROGRAMS install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip install-sysconfDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic tags uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-info-am uninstall-sysconfDATA - - -rebuild4: - ./extract.pl ../zebra/*.c ../ripd/*.c ../ospfd/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c >vtysh_cmd.c - -rebuild: - ./extract.pl ../zebra/*.c ../ripd/*.c ../ripngd/*.c ../ospfd/*.c ../ospf6d/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c >vtysh_cmd.c -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/vtysh/vtysh.h b/vtysh/vtysh.h index 193f46ea..08184df9 100644 --- a/vtysh/vtysh.h +++ b/vtysh/vtysh.h @@ -29,7 +29,7 @@ #define VTYSH_OSPF6D 0x10 #define VTYSH_BGPD 0x20 #define VTYSH_ALL VTYSH_ZEBRA|VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD -#define VTYSH_RMAP VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD +#define VTYSH_RMAP VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD #define VTYSH_INDEX_ZEBRA 0 #define VTYSH_INDEX_RIP 1 @@ -39,14 +39,6 @@ #define VTYSH_INDEX_BGP 5 #define VTYSH_INDEX_MAX 6 -/* UNIX domain socket path. */ -#define ZEBRA_PATH "/tmp/.zebra" -#define RIP_PATH "/tmp/.ripd" -#define RIPNG_PATH "/tmp/.ripngd" -#define OSPF_PATH "/tmp/.ospfd" -#define OSPF6_PATH "/tmp/.ospf6d" -#define BGP_PATH "/tmp/.bgpd" - /* vtysh local configuration file. */ #define VTYSH_DEFAULT_CONFIG "vtysh.conf" diff --git a/vtysh/vtysh_cmd.c b/vtysh/vtysh_cmd.c deleted file mode 100644 index c8f673be..00000000 --- a/vtysh/vtysh_cmd.c +++ /dev/null @@ -1,14734 +0,0 @@ -#include <zebra.h> -#include "command.h" -#include "vtysh.h" - -DEFSH (VTYSH_OSPFD, neighbor_cmd_vtysh, - "neighbor A.B.C.D", - "Specify neighbor router\n" - "Neighbor IP address\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_route_flapping_cmd_vtysh, - "show ipv6 ospf6 route flapping", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n") - -DEFSH (VTYSH_OSPFD, refresh_timer_cmd_vtysh, - "refresh timer <10-1800>", - "Adjust refresh parameters\n" - "Set refresh timer\n" - "Timer value in seconds\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_cmd_vtysh, - "show ipv6 mbgp", - "Show running system information\n" - "IP information\n" - "MBGP information\n") - -DEFSH (VTYSH_BGPD, show_ip_community_list_arg_cmd_vtysh, - "show ip community-list (<1-199>|WORD)", - "Show running system information\n" - "IP information\n" - "List community-list\n" - "Community-list number\n" - "Community-list name\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_interface_cmd_vtysh, - "show ipv6 ospf6 interface", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Interface infomation\n" - ) - -DEFSH (VTYSH_BGPD, no_neighbor_distribute_list_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "distribute-list (<1-199>|<1300-2699>|WORD) (in|out)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Filter updates to/from this neighbor\n" - "IP access-list number\n" - "IP access-list number (expanded range)\n" - "IP Access-list name\n" - "Filter incoming updates\n" - "Filter outgoing updates\n") - -DEFSH (VTYSH_RIPD, no_rip_offset_list_ifname_cmd_vtysh, - "no offset-list WORD (in|out) <0-16> IFNAME", - "Negate a command or set its defaults\n" - "Modify RIP metric\n" - "Access-list name\n" - "For incoming updates\n" - "For outgoing updates\n" - "Metric value\n" - "Interface to match\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_soft_in_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, no_neighbor_maximum_prefix_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Maximum number of prefix accept from this peer\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_prefix_longer_cmd_vtysh, - "show ipv6 mbgp X:X::X:X/M longer-prefixes", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_regexp_cmd_vtysh, - "show ipv6 mbgp regexp .LINE", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the MBGP AS paths\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_day_month_day_month_cmd_vtysh, - "accept-lifetime HH:MM:SS <1-31> MONTH <1993-2035> HH:MM:SS <1-31> MONTH <1993-2035>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Time to expire\n" - "Day of th month to expire\n" - "Month of the year to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, no_set_community_val_cmd_vtysh, - "no set community .AA:NN", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP community attribute\n" - "Community number in aa:nn format or local-AS|no-advertise|no-export|internet or additive\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community_list_exact_cmd_vtysh, - "show ipv6 bgp community-list WORD exact-match", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged9_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med next-hop as-path", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "Nexthop attribute\n" - "As-path attribute\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_static_metric_cmd_vtysh, - "redistribute static metric <0-16>", - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_zebra_sub_cmd_vtysh, - "no debug ospf zebra (interface|redistribute)", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Zebra information\n" - "Zebra interface\n" - "Zebra redistribute\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_string_cmd_vtysh, - "no ip rip authentication string", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication string\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_soft_cmd_vtysh, - "clear ip bgp view WORD * soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_param1_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, show_bgp_community3_exact_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPD, send_lifetime_day_month_month_day_cmd_vtysh, - "send-lifetime HH:MM:SS <1-31> MONTH <1993-2035> HH:MM:SS MONTH <1-31> <1993-2035>", - "Set send lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Time to expire\n" - "Month of the year to expire\n" - "Day of th month to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, no_ipv6_bgp_network_route_map_cmd_vtysh, - "no network X:X::X:X/M route-map WORD", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_ZEBRA, no_ip_route_distance_cmd_vtysh, - "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) <1-255>", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IP destination prefix (e.g. 10.0.0.0/8)\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n" - "Distance value for this route\n") - -DEFSH (VTYSH_BGPD, no_match_origin_val_cmd_vtysh, - "no match origin (egp|igp|incomplete)", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "BGP origin code\n" - "remote EGP\n" - "local IGP\n" - "unknown heritage\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbor_advertised_route_cmd_vtysh, - "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPF6D, no_router_zebra_cmd_vtysh, - "no router zebra", - "Negate a command or set its defaults\n" - "Configure routing process\n" - "Disable connection to zebra daemon\n") - -DEFSH (VTYSH_BGPD, no_router_bgp_cmd_vtysh, - "no router bgp <1-65535>", - "Negate a command or set its defaults\n" - "Enable a routing process\n" - "BGP information\n" - "AS number\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_cmd_vtysh, - "show ip route", - "Show running system information\n" - "IP information\n" - "IP routing table\n") - -DEFSH (VTYSH_OSPFD, no_area_range_cost_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M cost <0-16777215>", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "User specified metric for this range\n" - "Advertised metric for this range\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_cmd_vtysh, - "clear bgp *", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n") - -DEFSH (VTYSH_BGPD, no_neighbor_default_originate_rmap_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "default-originate route-map WORD", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Originate default route to this neighbor\n" - "Route-map to specify criteria to originate default\n" - "route-map name\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_ra_interval_cmd_vtysh, - "ipv6 nd ra-interval SECONDS", - "IP information\n" - "Neighbor discovery\n" - "Router Advertisement interval\n" - "Router Advertisement interval in seconds\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_summary_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_OSPFD, ospf_transmit_delay_cmd_vtysh, - "ospf transmit-delay <1-65535>", - "OSPF interface commands\n" - "Link state transmit delay\n" - "Seconds\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_default_metric_cmd_vtysh, - "no default-metric", - "Negate a command or set its defaults\n" - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_summary_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbor_advertised_route_cmd_vtysh, - "show bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_BGPD, no_neighbor_timers_connect_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "timers connect <0-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_any_mask_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip any A.B.C.D A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_intra_inter_cmd_vtysh, - "distance ospf intra-area <1-255> inter-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_connected_routemap_cmd_vtysh, - "redistribute connected route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPF6D|VTYSH_BGPD, match_ipv6_address_prefix_list_cmd_vtysh, - "match ipv6 address prefix-list WORD", - "Match values from routing table\n" - "IPv6 information\n" - "Match address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ospf6_routemap_cmd_vtysh, - "no redistribute ospf6 route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, rmap_onmatch_goto_cmd_vtysh, - "on-match goto <1-65535>", - "Exit policy on matches\n" - "Goto Clause number\n" - "Number\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_soft_in_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_in_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_summary_cmd_vtysh, - "show ip bgp summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_authtype_authkey_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) " - "(authentication-key|)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" - "Authentication password (key)\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, no_neighbor_capability_route_refresh_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "capability route-refresh", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise route-refresh capability to this neighbor\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_soft_in_cmd_vtysh, - "clear bgp ipv6 peer-group WORD soft in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_view_prefix_cmd_vtysh, - "show ip bgp view WORD A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "BGP view name\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, bgp_deterministic_med_cmd_vtysh, - "bgp deterministic-med", - "BGP specific commands\n" - "Pick the best-MED path among paths advertised from the neighboring AS\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_out_cmd_vtysh, - "clear bgp peer-group WORD out", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, ospf_default_metric_cmd_vtysh, - "default-metric <0-16777214>", - "Set metric of redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_intra_external_inter_cmd_vtysh, - "distance ospf intra-area <1-255> external <1-255> inter-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "External routes\n" - "Distance for external routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n") - -DEFSH (VTYSH_BGPD, aggregate_address_summary_only_cmd_vtysh, - "aggregate-address A.B.C.D/M summary-only", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_vpnv4_soft_out_cmd_vtysh, - "clear ip bgp * vpnv4 unicast soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, no_set_origin_val_cmd_vtysh, - "no set origin (egp|igp|incomplete)", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP origin code\n" - "remote EGP\n" - "local IGP\n" - "unknown heritage\n") - -DEFSH (VTYSH_BGPD, bgp_damp_set3_cmd_vtysh, - "bgp dampening", - "BGP Specific commands\n" - "Enable route-flap dampening\n") - -DEFSH (VTYSH_RIPD, no_rip_offset_list_cmd_vtysh, - "no offset-list WORD (in|out) <0-16>", - "Negate a command or set its defaults\n" - "Modify RIP metric\n" - "Access-list name\n" - "For incoming updates\n" - "For outgoing updates\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, ipv6_bgp_network_route_map_cmd_vtysh, - "network X:X::X:X/M route-map WORD", - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_OSPF6D, show_debug_ospf6_damp_cmd_vtysh, - "show debugging ospf6 damp", - "Show running system information\n" - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Flap-dampening information\n" - ) - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_type_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_name_all_cmd_vtysh, - "no ip extcommunity-list (standard|expanded) WORD", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Specify standard extcommunity-list\n" - "Specify expanded extcommunity-list\n" - "Extended Community list name\n") - -DEFSH (VTYSH_RIPNGD, debug_ripng_zebra_cmd_vtysh, - "debug ripng zebra", - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng and zebra communication\n") - -DEFSH (VTYSH_BGPD, set_vpnv4_nexthop_cmd_vtysh, - "set vpnv4 next-hop A.B.C.D", - "Set values in destination routing protocol\n" - "VPNv4 information\n" - "VPNv4 next-hop address\n" - "IP address of next hop\n") - -DEFSH (VTYSH_BGPD, no_neighbor_remote_as_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "remote-as <1-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Specify a BGP neighbor\n" - "AS number\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_prefix_cmd_vtysh, - "no ipv6 prefix-list WORD (deny|permit) (X:X::X:X/M|any)", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Any prefix match. Same as \"::0/0 le 128\"\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_zebra_cmd_vtysh, - "debug ospf zebra", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Zebra information\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_prefix_first_match_cmd_vtysh, - "show ip prefix-list WORD A.B.C.D/M first-match", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "First matched prefix\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbors_peer_cmd_vtysh, - "show bgp neighbors (A.B.C.D|X:X::X:X)", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_OSPF6D, ospf6_routemap_no_set_forwarding_cmd_vtysh, - "no set forwarding-address X:X::X:X", - "Negate a command or set its defaults\n" - "Set value\n" - "Forwarding Address\n" - "IPv6 Address\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_neighbors_cmd_vtysh, - "show ip bgp vpnv4 all neighbors", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_BGPD, neighbor_send_community_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Send Community attribute to this neighbor\n") - -DEFSH (VTYSH_BGPD, dump_bgp_updates_cmd_vtysh, - "dump bgp updates PATH", - "Dump packet\n" - "BGP packet dump\n" - "Dump BGP updates only\n" - "Output filename\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_in_prefix_filter_cmd_vtysh, - "clear ip bgp A.B.C.D in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig inbound update\n" - "Push out the existing ORF prefix-list\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_list_exact_cmd_vtysh, - "show ip bgp community-list WORD exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_infinite_day_month_cmd_vtysh, - "accept-lifetime HH:MM:SS <1-31> MONTH <1993-2035> infinite", - "Set accept lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Never expires") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_soft_out_cmd_vtysh, - "clear bgp ipv6 * soft out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_message_digest_key_cmd_vtysh, - "no ip ospf message-digest-key <1-255>", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n") - -DEFSH (VTYSH_ZEBRA, debug_zebra_packet_cmd_vtysh, - "debug zebra packet", - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra packet\n") - -DEFSH (VTYSH_BGPD, no_bgp_bestpath_med2_cmd_vtysh, - "no bgp bestpath med confed missing-as-worst", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Compare MED among confederation paths\n" - "Treat missing MED as the least preferred one\n") - -DEFSH (VTYSH_BGPD, no_bgp_multiple_instance_cmd_vtysh, - "no bgp multiple-instance", - "Negate a command or set its defaults\n" - "BGP information\n" - "BGP multiple instance\n") - -DEFSH (VTYSH_RIPD, no_rip_distance_cmd_vtysh, - "no distance <1-255>", - "Negate a command or set its defaults\n" - "Administrative distance\n" - "Distance value\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_soft_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_kernel_metric_val_cmd_vtysh, - "no redistribute kernel metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_route_map_all_cmd_vtysh, - "no route-map WORD", - "Negate a command or set its defaults\n" - "Create route-map or enter route-map command mode\n" - "Route map tag\n") - -DEFSH (VTYSH_BGPD, bgp_distance_source_access_list_cmd_vtysh, - "distance <1-255> A.B.C.D/M WORD", - "Define an administrative distance\n" - "Administrative distance\n" - "IP source prefix\n" - "Access list name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community3_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_sequence_number_cmd_vtysh, - "no ip prefix-list sequence-number", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Include/exclude sequence numbers in NVGEN\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_cmd_vtysh, - "clear bgp peer-group WORD", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_metric_type_routemap_cmd_vtysh, - "default-information originate metric <0-16777214> metric-type (1|2) route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_cmd_vtysh, - "show ip ospf database", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_reachable_time_cmd_vtysh, - "no ipv6 nd reachable-time", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Reachable time\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbor_received_prefix_filter_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) received prefix-filter", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display information received from a BGP neighbor\n" - "Display the prefixlist filter\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_seq_le_cmd_vtysh, - "ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M le <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_metric_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "Metric for redistributed routes\n" - "OSPF default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, neighbor_maximum_prefix_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Maximum number of prefix accept from this peer\n" - "maximum no. of prefix limit\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_ipv4_soft_in_cmd_vtysh, - "clear ip bgp view WORD * ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community_all_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_OSPFD, area_vlink_param2_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_soft_cmd_vtysh, - "clear bgp <1-65535> soft", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_cost_cmd_vtysh, - "ip ospf cost <1-65535>", - "IP Information\n" - "OSPF interface commands\n" - "Interface cost\n" - "Cost") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_connected_cmd_vtysh, - "redistribute connected", - "Redistribute information from another routing protocol\n" - "Connected\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_out_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_host_any_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D any", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "Any destination host\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_static_metric_cmd_vtysh, - "no redistribute static metric", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Metric\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_prefix_longer_cmd_vtysh, - "show ipv6 bgp X:X::X:X/M longer-prefixes", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, no_bgp_distance_source_access_list_cmd_vtysh, - "no distance <1-255> A.B.C.D/M WORD", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "Administrative distance\n" - "IP source prefix\n" - "Access list name\n") - -DEFSH (VTYSH_BGPD, neighbor_update_source_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "update-source WORD", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Source of routing updates\n" - "Interface name\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_sequence_number_cmd_vtysh, - "no ipv6 prefix-list sequence-number", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Include/exclude sequence numbers in NVGEN\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv6_metric_rmap_cmd_vtysh, - "no redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, ipv6_aggregate_address_cmd_vtysh, - "aggregate-address X:X::X:X/M", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_send_ra_cmd_vtysh, - "no ipv6 nd send-ra", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Send Router Advertisement\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_soft_out_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_vpnv4_soft_cmd_vtysh, - "clear ip bgp * vpnv4 unicast soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_OSPF6D, no_ipv6_ospf6_advertise_force_prefix_cmd_vtysh, - "no ipv6 ospf6 advertise force-prefix", - "Negate a command or set its defaults\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Advertising options\n" - "Force to advertise prefix, applicable if Loopback or P-to-P\n" - ) - -DEFSH (VTYSH_BGPD, no_neighbor_ebgp_multihop_ttl_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "ebgp-multihop <1-255>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_routemap_cmd_vtysh, - "default-information originate route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_neighbor_interface_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "interface WORD", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Interface\n" - "Interface name\n") - -DEFSH (VTYSH_RIPD, no_rip_distance_source_access_list_cmd_vtysh, - "no distance <1-255> A.B.C.D/M WORD", - "Negate a command or set its defaults\n" - "Administrative distance\n" - "Distance value\n" - "IP source prefix\n" - "Access list name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_cidr_only_cmd_vtysh, - "show ip bgp flap-statistics cidr-only", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Display only routes with non-natural netmasks\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_summary_cmd_vtysh, - "show ip bgp vpnv4 all summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_address_cmd_vtysh, - "no ipv6 address X:X::X:X/M", - "Negate a command or set its defaults\n" - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IPv6 address (e.g. 3ffe:506::1/48)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_soft_cmd_vtysh, - "clear bgp external soft", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_neighbor_shutdown_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "shutdown", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Administratively shut down this neighbor\n") - -DEFSH (VTYSH_BGPD, show_bgp_prefix_list_cmd_vtysh, - "show bgp prefix-list WORD", - "Show running system information\n" - "BGP information\n" - "Display routes conforming to the prefix-list\n" - "IPv6 prefix-list name\n") - -DEFSH (VTYSH_RIPD, rip_split_horizon_cmd_vtysh, - "ip split-horizon", - "IP information\n" - "Perform split horizon\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_summary_cmd_vtysh, - "show ipv6 prefix-list summary", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Summary of prefix lists\n") - -DEFSH (VTYSH_BGPD, set_community_none_cmd_vtysh, - "set community none", - "Set values in destination routing protocol\n" - "BGP community attribute\n" - "No community attribute\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged6_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path med next-hop", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Med attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_args_md5_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) (message-digest|null) " - "(message-digest-key|) <1-255> md5 KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" "Use null authentication\n" "Use message-digest authentication\n" - "Message digest authentication password (key)\n" "dummy string \n" "Key ID\n" "Use MD5 algorithm\n" "The OSPF password (key)") - -DEFSH (VTYSH_RIPD, ip_rip_receive_version_cmd_vtysh, - "ip rip receive version (1|2)", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement reception\n" - "Version control\n" - "RIP version 1\n" - "RIP version 2\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_kernel_metric_routemap_cmd_vtysh, - "redistribute kernel metric <0-16> route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_as_set_cmd_vtysh, - "no aggregate-address A.B.C.D/M as-set", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_out_cmd_vtysh, - "clear bgp ipv6 * out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, show_debugging_ospf_cmd_vtysh, - "show debugging ospf", - "Show running system information\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_all_cmd_vtysh, - "no access-list (<1-99>|<100-199>|<1300-1999>|<2000-2699>|WORD)", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP extended access list\n" - "IP standard access list (expanded range)\n" - "IP extended access list (expanded range)\n" - "IP zebra access-list name\n") - -DEFSH (VTYSH_BGPD, bgp_config_type_cmd_vtysh, - "bgp config-type (cisco|zebra)", - "BGP information\n" - "Configuration type\n" - "cisco\n" - "zebra\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_neighbor_int_detail_cmd_vtysh, - "show ip ospf neighbor A.B.C.D detail", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n" - "Interface address\n" - "detail of all neighbors") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged10_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med as-path next-hop", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "As-path attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_backdoor_cmd_vtysh, - "no network A.B.C.D/M backdoor", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_RIPNGD, no_debug_ripng_events_cmd_vtysh, - "no debug ripng events", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng events\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_in_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_bgp_routemap_cmd_vtysh, - "redistribute bgp route-map WORD", - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, aggregate_address_mask_summary_only_cmd_vtysh, - "aggregate-address A.B.C.D A.B.C.D summary-only", - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_all_cmd_vtysh, - "show ip bgp community", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged8_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop as-path med", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "As-path attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_reachable_time_cmd_vtysh, - "ipv6 nd reachable-time MILLISECONDS", - "IP information\n" - "Neighbor discovery\n" - "Reachable time\n" - "Reachable time in milliseconds\n") - -DEFSH (VTYSH_RIPNGD, ripng_default_metric_cmd_vtysh, - "default-metric <1-16>", - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_database_type_cmd_vtysh, - "show ipv6 ospf6 database (router|network|as-external|intra-prefix|inter-prefix|inter-router|link|*|HEX|dump|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "LSA Database\n" - "Router-LSA\n" - "Network-LSA\n" - "AS-External-LSA\n" - "Intra-Area-Prefix-LSA\n" - "Inter-Area-Router-LSA\n" - "Inter-Area-Prefix-LSA\n" - "Link-LSA\n" - "All LS Type\n" - "Specify LS Type by Hex\n" - "Dump raw LSA data in Hex\n" - "show detail of LSAs\n" - ) - -DEFSH (VTYSH_BGPD, no_aggregate_address_cmd_vtysh, - "no aggregate-address A.B.C.D/M", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_BGPD, no_neighbor_allowas_in_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "allowas-in", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "allow local ASN appears in aspath attribute\n") - -DEFSH (VTYSH_BGPD, aggregate_address_mask_as_set_cmd_vtysh, - "aggregate-address A.B.C.D A.B.C.D as-set", - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_bgp_metric_cmd_vtysh, - "no redistribute bgp metric", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_kernel_cmd_vtysh, - "no redistribute kernel", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_vpnv4_soft_in_cmd_vtysh, - "clear ip bgp * vpnv4 unicast soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD, rip_redistribute_type_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|ospf|bgp) route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_metric_type_cmd_vtysh, - "default-information originate always metric <0-16777214> metric-type (1|2)", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_seq_cmd_vtysh, - "ip prefix-list WORD seq <1-4294967295> (deny|permit) (A.B.C.D/M|any)", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") - -DEFSH (VTYSH_OSPFD, no_ospf_network_cmd_vtysh, - "no ospf network", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Network type\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_prefix_cmd_vtysh, - "no ip prefix-list WORD (deny|permit) (A.B.C.D/M|any)", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") - -DEFSH (VTYSH_BGPD, set_community_delete_cmd_vtysh, - "set comm-list (<1-99>|<100-199>|WORD) delete", - "Set values in destination routing protocol\n" - "set BGP community list (for deletion)\n" - "Community-list number (standard)\n" - "Communitly-list number (expanded)\n" - "Community-list name\n" - "Delete matching communities\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_soft_out_cmd_vtysh, - "clear ip bgp external soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_neighbor_cmd_vtysh, - "show ipv6 ospf6 neighbor", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Neighbor list\n" - ) - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_database_type_id_adv_router_cmd_vtysh, - "show ipv6 ospf6 database (router|network|as-external|intra-prefix|inter-prefix|inter-router|link|*|HEX) (A.B.C.D|*) (A.B.C.D|*|dump|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "LSA Database\n" - "Router-LSA\n" - "Network-LSA\n" - "AS-External-LSA\n" - "Intra-Area-Prefix-LSA\n" - "Inter-Area-Router-LSA\n" - "Inter-Area-Prefix-LSA\n" - "Link-LSA\n" - "All LS Type\n" - "Specify LS Type by Hex\n" - "Link State ID\n" - "All Link State ID\n" - "Advertising Router\n" - "All Advertising Router\n" - "Dump raw LSA data in Hex\n" - "show detail of LSAs\n" - ) - -DEFSH (VTYSH_RIPD, rip_passive_interface_cmd_vtysh, - "passive-interface IFNAME", - "Suppress routing updates on an interface\n" - "Interface name\n") - -DEFSH (VTYSH_BGPD, no_neighbor_capability_orf_prefix_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "capability orf prefix-list (both|send|receive)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise ORF capability to the peer\n" - "Advertise prefixlist ORF capability to this neighbor\n" - "Capability to SEND and RECEIVE the ORF to/from this neighbor\n" - "Capability to RECEIVE the ORF from this neighbor\n" - "Capability to SEND the ORF to this neighbor\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_bgp_cmd_vtysh, - "redistribute bgp", - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_interface_ifname_cmd_vtysh, - "show ipv6 ospf6 interface IFNAME", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Interface infomation\n" - "Interface name(e.g. ep0)\n" - ) - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_prefix_advertisement_cmd_vtysh, - "no ipv6 nd prefix-advertisement IPV6PREFIX", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Prefix information\n" - "IPv6 prefix\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_intra_inter_external_cmd_vtysh, - "distance ospf intra-area <1-255> inter-area <1-255> external <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "External routes\n" - "Distance for external routes\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_out_cmd_vtysh, - "clear bgp * out", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, area_stub_no_summary_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) stub no-summary", - "OSPF stub parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Configure OSPF area as stub\n" - "Do not inject inter-area routes into stub\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_ospf6_metric_cmd_vtysh, - "redistribute ospf6 metric <0-16>", - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_seq_le_ge_cmd_vtysh, - "no ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M le <0-128> ge <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_RIPNGD, default_information_originate_cmd_vtysh, - "default-information originate", - "Default route information\n" - "Distribute default route\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_lsa_sub_cmd_vtysh, - "debug ospf lsa (generate|flooding|install|refresh)", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Link State Advertisement\n" - "LSA Generation\n" - "LSA Flooding\n" - "LSA Install/Delete\n" - "LSA Refresh\n") - -DEFSH (VTYSH_RIPD, send_lifetime_day_month_day_month_cmd_vtysh, - "send-lifetime HH:MM:SS <1-31> MONTH <1993-2035> HH:MM:SS <1-31> MONTH <1993-2035>", - "Set send lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Time to expire\n" - "Day of th month to expire\n" - "Month of the year to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_bgp_metric_routemap_cmd_vtysh, - "no redistribute bgp metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, area_range_cost_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M cost <0-16777215>", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "User specified metric for this range\n" - "Advertised metric for this range\n") - -DEFSH (VTYSH_BGPD, no_ipv6_aggregate_address_cmd_vtysh, - "no aggregate-address X:X::X:X/M", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_seq_ge_cmd_vtysh, - "no ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M ge <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_route_cmd_vtysh, - "show ip bgp vpnv4 all A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_BGPD, clear_bgp_instance_all_soft_in_cmd_vtysh, - "clear bgp view WORD * soft in", - "Reset functions\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_soft_in_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, aggregate_address_mask_as_set_summary_cmd_vtysh, - "aggregate-address A.B.C.D A.B.C.D as-set summary-only", - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Generate AS set path information\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_hello_interval_cmd_vtysh, - "ip ospf hello-interval <1-65535>", - "IP Information\n" - "OSPF interface commands\n" - "Time between HELLO packets\n" - "Seconds\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_kernel_metric_cmd_vtysh, - "redistribute kernel metric <0-16>", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, no_set_local_pref_cmd_vtysh, - "no set local-preference", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP local preference path attribute\n") - -DEFSH (VTYSH_BGPD, no_bgp_client_to_client_reflection_cmd_vtysh, - "no bgp client-to-client reflection", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure client to client route reflection\n" - "reflection of routes allowed\n") - -DEFSH (VTYSH_BGPD, show_bgp_community4_exact_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPF6D, no_interface_area_cmd_vtysh, - "no interface IFNAME area A.B.C.D", - "Negate a command or set its defaults\n" - "Disable routing on an IPv6 interface\n" - "Interface name(e.g. ep0)\n") - -DEFSH (VTYSH_BGPD, neighbor_remote_as_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "remote-as <1-65535>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a BGP neighbor\n" - "AS number\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_ism_cmd_vtysh, - "debug ospf ism", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Interface State Machine\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_out_cmd_vtysh, - "clear ip bgp peer-group WORD out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPF6D, ospf6_area_range_cmd_vtysh, - "area A.B.C.D range X:X::X:X/M", - "OSPFv3 area parameters\n" - "OSPFv3 area ID in IPv4 address format\n" - "Summarize routes matching address/mask (border routers only)\n" - "IPv6 address range\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_address_cmd_vtysh, - "no match ip address", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match address of route\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_dead_interval_cmd_vtysh, - "no ip ospf dead-interval", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n") - -DEFSH (VTYSH_OSPFD, area_authentication_message_digest_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) authentication message-digest", - "OSPF area parameters\n" - "Enable authentication\n" - "Use message-digest authentication\n") - -DEFSH (VTYSH_RIPD, no_rip_redistribute_type_metric_routemap_cmd_vtysh, - "no redistribute (kernel|connected|static|ospf|bgp) metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_neighbor_all_cmd_vtysh, - "show ip ospf neighbor all", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n" - "include down status neighbor\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_ra_lifetime_cmd_vtysh, - "no ipv6 nd ra-lifetime", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Router lifetime\n") - -DEFSH (VTYSH_OSPFD, neighbor_priority_poll_interval_cmd_vtysh, - "neighbor A.B.C.D priority <0-255> poll-interval <1-65535>", - "Specify neighbor router\n" - "Neighbor IP address\n" - "Neighbor Priority\n" - "Priority\n" - "Dead Neighbor Polling interval\n" - "Seconds\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_seq_le_cmd_vtysh, - "no ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M le <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, neighbor_filter_list_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "filter-list WORD (in|out)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Establish BGP filters\n" - "AS path access-list name\n" - "Filter incoming routes\n" - "Filter outgoing routes\n") - -DEFSH (VTYSH_ZEBRA, no_ip_address_secondary_cmd_vtysh, - "no ip address A.B.C.D/M secondary", - "Negate a command or set its defaults\n" - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP address (e.g. 10.0.0.1/8)\n" - "Secondary IP address\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_attr_info_cmd_vtysh, - "show ip bgp attribute-info", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "List all bgp attribute information\n") - -DEFSH (VTYSH_BGPD, neighbor_strict_capability_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "strict-capability-match", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Strict capability negotiation match\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_type_metric_routemap_cmd_vtysh, - "default-information originate always metric-type (1|2) metric <0-16777214> route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "OSPF default metric\n" - "OSPF metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, area_range_advertise_cost_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise cost <0-16777215>", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "Advertise this range (default)\n" - "User specified metric for this range\n" - "Advertised metric for this range\n") - -DEFSH (VTYSH_OSPFD, no_ospf_distance_ospf_cmd_vtysh, - "no distance ospf", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "OSPF Distance\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_prefix_cmd_vtysh, - "show ip bgp A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_static_metric_routemap_cmd_vtysh, - "redistribute static metric <0-16> route-map WORD", - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_authtype_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community2_exact_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_neighbor_routerid_cmd_vtysh, - "show ipv6 ospf6 neighbor A.B.C.D", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Neighbor list\n" - "OSPF6 neighbor Router ID in IP address format\n" - ) - -DEFSH (VTYSH_OSPFD, area_shortcut_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) shortcut (default|enable|disable)", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Configure the area's shortcutting mode\n" - "Set default shortcutting behavior\n" - "Enable shortcutting through the area\n" - "Disable shortcutting through the area\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_type_routemap_cmd_vtysh, - "default-information originate always metric-type (1|2) route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_dampening_prefix_cmd_vtysh, - "clear ip bgp dampening A.B.C.D/M", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear route flap dampening information\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_prefix_longer_cmd_vtysh, - "show ipv6 prefix-list WORD X:X::X:X/M longer", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Lookup longer prefix\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_prefix_list_cmd_vtysh, - "show ip bgp prefix-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes conforming to the prefix-list\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_BGPD, no_neighbor_maximum_prefix_val2_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> warning-only", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Maximum number of prefix accept from this peer\n" - "maximum no. of prefix limit\n" - "Only give warning message when limit is exceeded\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ospf6_metric_val_cmd_vtysh, - "no redistribute ospf6 metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, show_bgp_instance_summary_cmd_vtysh, - "show bgp view WORD summary", - "Show running system information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_suppress_ra_cmd_vtysh, - "no ipv6 nd suppress-ra", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Suppress Router Advertisement\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_name_cmd_vtysh, - "show ip prefix-list WORD", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, debug_bgp_fsm_cmd_vtysh, - "debug bgp fsm", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP Finite State Machine\n") - -DEFSH (VTYSH_RIPD, send_lifetime_month_day_day_month_cmd_vtysh, - "send-lifetime HH:MM:SS MONTH <1-31> <1993-2035> HH:MM:SS <1-31> MONTH <1993-2035>", - "Set send lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Time to expire\n" - "Day of th month to expire\n" - "Month of the year to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_mask_as_set_summary_cmd_vtysh, - "no aggregate-address A.B.C.D A.B.C.D as-set summary-only", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Generate AS set path information\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_external_intra_inter_cmd_vtysh, - "distance ospf external <1-255> intra-area <1-255> inter-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "External routes\n" - "Distance for external routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_day_month_month_day_cmd_vtysh, - "accept-lifetime HH:MM:SS <1-31> MONTH <1993-2035> HH:MM:SS MONTH <1-31> <1993-2035>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Time to expire\n" - "Month of the year to expire\n" - "Day of th month to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, no_neighbor_advertise_interval_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "advertisement-interval", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Minimum interval between sending BGP routing updates\n") - -DEFSH (VTYSH_BGPD, neighbor_soft_reconfiguration_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "soft-reconfiguration inbound", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Per neighbor soft reconfiguration\n" - "Allow inbound soft reconfiguration for this neighbor\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_cmd_vtysh, - "default-information originate always", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n") - -DEFSH (VTYSH_BGPD, no_bgp_scan_time_cmd_vtysh, - "no bgp scan-time", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure background scanner interval\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_normal_cmd_vtysh, - "undebug bgp", - "Disable debugging functions (see also 'debug')\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, no_neighbor_description_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "description", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Neighbor specific description\n") - -DEFSH (VTYSH_BGPD, aggregate_address_mask_cmd_vtysh, - "aggregate-address A.B.C.D A.B.C.D", - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n") - -DEFSH (VTYSH_BGPD, ip_community_list_expanded_cmd_vtysh, - "ip community-list <100-199> (deny|permit) .LINE", - "IP information\n" - "Add a community list entry\n" - "Community list number (expanded)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_soft_out_cmd_vtysh, - "clear bgp external soft out", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_ZEBRA, config_table_cmd_vtysh, - "table TABLENO", - "Configure target kernel routing table\n" - "TABLE integer\n") - -DEFSH (VTYSH_RIPNGD, ripng_aggregate_address_cmd_vtysh, - "aggregate-address X:X::X:X/M", - "Set aggregate RIPng route announcement\n" - "Aggregate network\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_route_map_cmd_vtysh, - "show ip bgp flap-statistics route-map WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Display routes matching the route-map\n" - "A route-map to match on\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_route_cmd_vtysh, - "show ipv6 ospf6 route", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Routing table\n" - ) - -DEFSH (VTYSH_OSPF6D, redistribute_ospf6_cmd_vtysh, - "redistribute ospf6", - "Redistribute control\n" - "OSPF6 route\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, match_ip_next_hop_prefix_list_cmd_vtysh, - "match ip next-hop prefix-list WORD", - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_detail_name_cmd_vtysh, - "show ipv6 prefix-list detail WORD", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Detail of prefix lists\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_in_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) in", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged4_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med (as-path|next-hop)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "As-path attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_BGPD, neighbor_default_originate_rmap_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "default-originate route-map WORD", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Originate default route to this neighbor\n" - "Route-map to specify criteria to originate default\n" - "route-map name\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_in_cmd_vtysh, - "clear ip bgp * in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPF6D, interface_area_plist_passive_cmd_vtysh, - "interface IFNAME area A.B.C.D prefix-list WORD passive", - "Enable routing on an IPv6 interface\n" - "Interface name(e.g. ep0)\n" - "Set the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" - "Advertise I/F Address only match entries of prefix-list\n" - "IPv6 prefix-list name\n" - "IPv6 prefix-list name\n" - "Suppress routing updates on an interface\n" - ) - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, match_ip_address_prefix_list_cmd_vtysh, - "match ip address prefix-list WORD", - "Match values from routing table\n" - "IP information\n" - "Match address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_summary_cmd_vtysh, - "show ip prefix-list summary", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Summary of prefix lists\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_prefix_longer_cmd_vtysh, - "show ip bgp A.B.C.D/M longer-prefixes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, show_ip_access_list_cmd_vtysh, - "show ip access-list", - "Show running system information\n" - "IP information\n" - "List IP access lists\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_match_metric_cmd_vtysh, - "no match metric", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match metric of route\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged2_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path (next-hop|med)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, set_ip_nexthop_cmd_vtysh, - "set ip next-hop A.B.C.D", - "Set values in destination routing protocol\n" - "IP information\n" - "Next hop address\n" - "IP address of next hop\n") - -DEFSH (VTYSH_BGPD, bgp_bestpath_med3_cmd_vtysh, - "bgp bestpath med missing-as-worst confed", - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Treat missing MED as the least preferred one\n" - "Compare MED among confederation paths\n") - -DEFSH (VTYSH_BGPD, dump_bgp_updates_interval_cmd_vtysh, - "dump bgp updates PATH INTERVAL", - "Dump packet\n" - "BGP packet dump\n" - "Dump BGP updates only\n" - "Output filename\n" - "Interval of output\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_dampening_address_mask_cmd_vtysh, - "clear ip bgp dampening A.B.C.D A.B.C.D", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear route flap dampening information\n" - "Network to clear damping information\n" - "Network mask\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv4_rmap_metric_cmd_vtysh, - "no redistribute (connected|kernel|ospf|rip|static) route-map WORD metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community2_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_neighbor_advertised_routes_cmd_vtysh, - "show ip bgp vpnv4 all neighbors A.B.C.D advertised-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_RIPD, no_match_ip_next_hop_val_cmd_vtysh, - "no match ip next-hop WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n" - "IP access-list name\n") - -DEFSH (VTYSH_BGPD, no_bgp_default_local_preference_cmd_vtysh, - "no bgp default local-preference", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure BGP defaults\n" - "local preference (higher=more preferred)\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_database_type_id_cmd_vtysh, - "show ipv6 ospf6 database (router|network|as-external|intra-prefix|inter-prefix|inter-router|link|*|HEX) (A.B.C.D|*|dump|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "LSA Database\n" - "Router-LSA\n" - "Network-LSA\n" - "AS-External-LSA\n" - "Intra-Area-Prefix-LSA\n" - "Inter-Area-Router-LSA\n" - "Inter-Area-Prefix-LSA\n" - "Link-LSA\n" - "All LS Type\n" - "Specify LS Type by Hex\n" - "Link State ID\n" - "All Link State ID\n" - "Dump raw LSA data in Hex\n" - "show detail of LSAs\n" - ) - -DEFSH (VTYSH_OSPFD, debug_ospf_zebra_sub_cmd_vtysh, - "debug ospf zebra (interface|redistribute)", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Zebra information\n" - "Zebra interface\n" - "Zebra redistribute\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_cmd_vtysh, - "no ipv6 prefix-list WORD", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv6_metric_rmap_cmd_vtysh, - "redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295> route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_tags_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn tags", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Display BGP tags for prefixes\n") - -DEFSH (VTYSH_RIPD, send_lifetime_month_day_month_day_cmd_vtysh, - "send-lifetime HH:MM:SS MONTH <1-31> <1993-2035> HH:MM:SS MONTH <1-31> <1993-2035>", - "Set send lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Time to expire\n" - "Month of the year to expire\n" - "Day of th month to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbors_cmd_vtysh, - "show bgp neighbors", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_natural_backdoor_cmd_vtysh, - "no network A.B.C.D backdoor", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_OSPF6D, ospf6_routemap_set_forwarding_cmd_vtysh, - "set forwarding-address X:X::X:X", - "Set value\n" - "Forwarding Address\n" - "IPv6 Address\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community_list_cmd_vtysh, - "show ipv6 bgp community-list WORD", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_any_any_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip any any", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "Any destination host\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_soft_out_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, no_area_authentication_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) authentication", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Enable authentication\n") - -DEFSH (VTYSH_BGPD, no_neighbor_maximum_prefix_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Maximum number of prefix accept from this peer\n" - "maximum no. of prefix limit\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_in_prefix_filter_cmd_vtysh, - "clear bgp ipv6 peer-group WORD in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_description_arg_cmd_vtysh, - "no ipv6 prefix-list WORD description .LINE", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n" - "Up to 80 characters describing this prefix-list\n") - -DEFSH (VTYSH_OSPFD, neighbor_poll_interval_priority_cmd_vtysh, - "neighbor A.B.C.D poll-interval <1-65535> priority <0-255>", - "Specify neighbor router\n" - "Neighbor address\n" - "OSPF dead-router polling interval\n" - "Seconds\n" - "OSPF priority of non-broadcast neighbor\n" - "Priority\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_backdoor_cmd_vtysh, - "no network A.B.C.D mask A.B.C.D backdoor", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_other_config_flag_cmd_vtysh, - "no ipv6 nd other-config-flag", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Other statefull configuration flag\n") - -DEFSH (VTYSH_RIPNGD, no_default_information_originate_cmd_vtysh, - "no default-information originate", - "Negate a command or set its defaults\n" - "Default route information\n" - "Distribute default route\n") - -DEFSH (VTYSH_BGPD, no_neighbor_send_community_type_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community (both|extended|standard)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Send Community attribute to this neighbor\n" - "Send Standard and Extended Community attributes\n" - "Send Extended Community attributes\n" - "Send Standard Community attributes\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_name_expanded_cmd_vtysh, - "no ip extcommunity-list expanded WORD (deny|permit) .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Specify expanded extcommunity-list\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_BGPD, no_bgp_bestpath_aspath_ignore_cmd_vtysh, - "no bgp bestpath as-path ignore", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Change the default bestpath selection\n" - "AS-path attribute\n" - "Ignore as-path length in selecting a route\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_prefix_cmd_vtysh, - "show ip route A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_update_cmd_vtysh, - "undebug bgp updates", - "Disable debugging functions (see also 'debug')\n" - "BGP information\n" - "BGP updates\n") - -DEFSH (VTYSH_BGPD, no_set_vpnv4_nexthop_val_cmd_vtysh, - "no set vpnv4 next-hop A.B.C.D", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "VPNv4 information\n" - "VPNv4 next-hop address\n" - "IP address of next hop\n") - -DEFSH (VTYSH_OSPFD, no_ospf_rfc1583_flag_cmd_vtysh, - "no ospf rfc1583compatibility", - "Negate a command or set its defaults\n" - "OSPF specific commands\n" - "Disable the RFC1583Compatibility flag\n") - -DEFSH (VTYSH_BGPD, show_ip_community_list_cmd_vtysh, - "show ip community-list", - "Show running system information\n" - "IP information\n" - "List community-list\n") - -DEFSH (VTYSH_BGPD, set_weight_cmd_vtysh, - "set weight <0-4294967295>", - "Set values in destination routing protocol\n" - "BGP weight for routing table\n" - "Weight value\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_transmit_delay_addr_cmd_vtysh, - "ip ospf transmit-delay <1-65535> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Link state transmit delay\n" - "Seconds\n" - "Address of interface") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_neighborlist_cmd_vtysh, - "show ipv6 ospf6 (summary-list|request-list|retrans-list|dbdesc-list)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Link State summary list\n" - "Link State request list\n" - "Link State retransmission list\n" - "Link State Description list (Used to retrans DbDesc)\n" - ) - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv4_rmap_cmd_vtysh, - "no redistribute (connected|kernel|ospf|rip|static) route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_md5_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(message-digest-key|) <1-255>", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Message digest authentication password (key)\n" "dummy string \n" "Key ID\n" "Use MD5 algorithm\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, neighbor_version_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "version (4|4-)", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Neighbor's BGP version\n" - "Border Gateway Protocol 4\n" - "Multiprotocol Extensions for BGP-4(Old Draft)\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_type_cmd_vtysh, - "default-information originate always metric-type (1|2)", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_in_prefix_filter_cmd_vtysh, - "clear bgp ipv6 external in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, neighbor_transparent_nexthop_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "transparent-nexthop", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Do not change nexthop even peer is EBGP peer\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_packet_send_recv_cmd_vtysh, - "no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv|detail)", - "Negate a command or set its defaults\n" - "Debugging functions\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n" - "Packet sent\n" - "Packet received\n" - "Detail Information\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_filter_cmd_vtysh, - "undebug bgp filters", - "Disable debugging functions (see also 'debug')\n" - "BGP information\n" - "BGP filters\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_duration_month_day_cmd_vtysh, - "accept-lifetime HH:MM:SS MONTH <1-31> <1993-2035> duration <1-2147483646>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Duration of the key\n" - "Duration seconds\n") - -DEFSH (VTYSH_OSPFD, no_ospf_router_id_cmd_vtysh, - "no ospf router-id", - "Negate a command or set its defaults\n" - "OSPF specific commands\n" - "router-id for the OSPF process\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_exact_cmd_vtysh, - "no access-list WORD (deny|permit) A.B.C.D/M exact-match", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n" - "Exact match of the prefixes\n") - -DEFSH (VTYSH_ZEBRA, debug_zebra_kernel_cmd_vtysh, - "debug zebra kernel", - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra between kernel interface\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_cmd_vtysh, - "show ip ospf", - "Show running system information\n" - "IP information\n" - "OSPF information\n") - -DEFSH (VTYSH_BGPD, neighbor_unsuppress_map_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "unsuppress-map WORD", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Route-map to selectively unsuppress suppressed routes\n" - "Name of route map\n") - -DEFSH (VTYSH_OSPFD, ospf_retransmit_interval_cmd_vtysh, - "ospf retransmit-interval <3-65535>", - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n" - "Seconds\n") - -DEFSH (VTYSH_RIPD, no_rip_default_information_originate_cmd_vtysh, - "no default-information originate", - "Negate a command or set its defaults\n" - "Control distribution of default route\n" - "Distribute a default route\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_static_cmd_vtysh, - "no redistribute static", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Static routes\n") - -DEFSH (VTYSH_BGPD, no_dump_bgp_all_cmd_vtysh, - "no dump bgp all [PATH] [INTERVAL]", - "Negate a command or set its defaults\n" - "Dump packet\n" - "BGP packet dump\n" - "Dump all BGP packets\n") - -DEFSH (VTYSH_BGPD, neighbor_advertise_interval_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "advertisement-interval <0-600>", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_interface_cmd_vtysh, - "show ip ospf interface [INTERFACE]", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Interface information\n" - "Interface name\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_cmd_vtysh, - "access-list WORD (deny|permit) A.B.C.D/M", - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n") - -DEFSH (VTYSH_RIPD, rip_distance_cmd_vtysh, - "distance <1-255>", - "Administrative distance\n" - "Distance value\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_in_prefix_filter_cmd_vtysh, - "clear ip bgp * in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_detail_cmd_vtysh, - "show ipv6 prefix-list detail", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Detail of prefix lists\n") - -DEFSH (VTYSH_BGPD, neighbor_dont_capability_negotiate_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "dont-capability-negotiate", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Do not perform capability negotiation\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_cmd_vtysh, - "no ip prefix-list WORD", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, no_bgp_default_ipv4_unicast_cmd_vtysh, - "no bgp default ipv4-unicast", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure BGP defaults\n" - "Activate ipv4-unicast for a peer by default\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_route_cmd_vtysh, - "show bgp ipv6 X:X::X:X", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_expanded_cmd_vtysh, - "no ip extcommunity-list <100-199> (deny|permit) .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (expanded)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_month_day_month_day_cmd_vtysh, - "accept-lifetime HH:MM:SS MONTH <1-31> <1993-2035> HH:MM:SS MONTH <1-31> <1993-2035>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Time to expire\n" - "Month of the year to expire\n" - "Day of th month to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_seq_ge_cmd_vtysh, - "ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M ge <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community_list_exact_cmd_vtysh, - "show ipv6 mbgp community-list WORD exact-match", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_OSPFD, no_ospf_default_information_originate_cmd_vtysh, - "no default-information originate", - "Negate a command or set its defaults\n" - "Control distribution of default information\n" - "Distribute a default route\n") - -DEFSH (VTYSH_BGPD, match_ipv6_address_cmd_vtysh, - "match ipv6 address WORD", - "Match values from routing table\n" - "IPv6 information\n" - "Match IPv6 address of route\n" - "IPv6 access-list name\n") - -DEFSH (VTYSH_BGPD, no_neighbor_activate_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "activate", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Enable the Address Family for this Neighbor\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_standard_nomask_cmd_vtysh, - "access-list (<1-99>|<1300-1999>) (deny|permit) A.B.C.D", - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Address to match\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_in_cmd_vtysh, - "clear bgp ipv6 <1-65535> in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD, no_rip_timers_cmd_vtysh, - "no timers basic", - "Negate a command or set its defaults\n" - "Adjust routing timers\n" - "Basic routing protocol update timers\n") - -DEFSH (VTYSH_BGPD, no_set_community_cmd_vtysh, - "no set community", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP community attribute\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_cmd_vtysh, - "distance <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n") - -DEFSH (VTYSH_BGPD, no_ipv6_bgp_network_cmd_vtysh, - "no network X:X::X:X/M", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>\n") - -DEFSH (VTYSH_BGPD, no_neighbor_passive_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "passive", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Don't send open messages to this neighbor\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_vpnv4_out_cmd_vtysh, - "clear ip bgp A.B.C.D vpnv4 unicast out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_remark_cmd_vtysh, - "access-list (<1-99>|<100-199>|<1300-1999>|<2000-2699>|WORD) remark .LINE", - "Add an access list entry\n" - "IP standard access list\n" - "IP extended access list\n" - "IP standard access list (expanded range)\n" - "IP extended access list (expanded range)\n" - "IP zebra access-list\n" - "Access list entry comment\n" - "Comment up to 100 characters\n") - -DEFSH (VTYSH_RIPNGD, show_ipv6_ripng_cmd_vtysh, - "show ipv6 ripng", - "Show running system information\n" - "IP information\n" - "Show RIPng routes\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_soft_out_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_database_type_id_adv_router_dump_cmd_vtysh, - "show ipv6 ospf6 database (router|network|as-external|intra-prefix|inter-prefix|inter-router|link|*|HEX) (A.B.C.D|*) (A.B.C.D|*) (dump|detail|)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "LSA Database\n" - "Router-LSA\n" - "Network-LSA\n" - "AS-External-LSA\n" - "Intra-Area-Prefix-LSA\n" - "Inter-Area-Router-LSA\n" - "Inter-Area-Prefix-LSA\n" - "Link-LSA\n" - "All LS Type\n" - "Specify LS Type by Hex\n" - "Link State ID\n" - "All Link State ID\n" - "Advertising Router\n" - "All Advertising Router\n" - "Dump raw LSA data in Hex\n" - "show detail of LSAs\n" - ) - -DEFSH (VTYSH_OSPFD, no_set_metric_type_cmd_vtysh, - "no set metric-type", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "Type of metric for destination routing protocol\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv4_cmd_vtysh, - "no redistribute (connected|kernel|ospf|rip|static)", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n") - -DEFSH (VTYSH_BGPD, no_match_ipv6_next_hop_cmd_vtysh, - "no match ipv6 next-hop X:X::X:X", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IPv6 information\n" - "Match IPv6 next-hop address of route\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_set_ip_nexthop_val_cmd_vtysh, - "no set ip next-hop A.B.C.D", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IP information\n" - "Next hop address\n" - "IP address of next hop\n") - -DEFSH (VTYSH_OSPF6D, show_debug_ospf6_cmd_vtysh, - "show debugging ospf6", - "Show running system information\n" - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_standard_cmd_vtysh, - "no ip community-list <1-99> (deny|permit) .AA:NN", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_RIPD, send_lifetime_duration_month_day_cmd_vtysh, - "send-lifetime HH:MM:SS MONTH <1-31> <1993-2035> duration <1-2147483646>", - "Set send lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Duration of the key\n" - "Duration seconds\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community4_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_prefix_longer_cmd_vtysh, - "show ip prefix-list WORD A.B.C.D/M longer", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Lookup longer prefix\n") - -DEFSH (VTYSH_BGPD, bgp_network_mask_cmd_vtysh, - "network A.B.C.D mask A.B.C.D", - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_cost_cmd_vtysh, - "no ip ospf cost", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Interface cost\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_detail_name_cmd_vtysh, - "show ip prefix-list detail WORD", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Detail of prefix lists\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_ra_lifetime_cmd_vtysh, - "ipv6 nd ra-lifetime SECONDS", - "IP information\n" - "Neighbor discovery\n" - "Router lifetime\n" - "Router lifetime in seconds\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_neighbor_detail_all_cmd_vtysh, - "show ip ospf neighbor detail all", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n" - "detail of all neighbors\n" - "include down status neighbor\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_packet_send_recv_detail_cmd_vtysh, - "debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) (detail|)", - "Debugging functions\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n" - "Packet sent\n" - "Packet received\n" - "Detail Information\n") - -DEFSH (VTYSH_BGPD, bgp_network_backdoor_cmd_vtysh, - "network A.B.C.D/M backdoor", - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv6_metric_cmd_vtysh, - "no redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_cmd_vtysh, - "clear ip bgp view WORD *", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n") - -DEFSH (VTYSH_BGPD, no_match_ecommunity_val_cmd_vtysh, - "no match extcommunity (<1-99>|<100-199>|WORD)", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP/VPN extended community list\n" - "Extended community-list number (standard)\n" - "Extended community-list number (expanded)\n" - "Extended community-list name\n") - -DEFSH (VTYSH_BGPD, no_set_ipv6_nexthop_local_cmd_vtysh, - "no set ipv6 next-hop local", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 local address\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_route_cmd_vtysh, - "show ip ospf route", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "OSPF routing table\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_prefix_longer_cmd_vtysh, - "show ip bgp flap-statistics A.B.C.D/M longer-prefixes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, no_set_weight_cmd_vtysh, - "no set weight", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP weight for routing table\n") - -DEFSH (VTYSH_BGPD, neighbor_distribute_list_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "distribute-list (<1-199>|<1300-2699>|WORD) (in|out)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Filter updates to/from this neighbor\n" - "IP access-list number\n" - "IP access-list number (expanded range)\n" - "IP Access-list name\n" - "Filter incoming updates\n" - "Filter outgoing updates\n") - -DEFSH (VTYSH_BGPD, no_match_community_cmd_vtysh, - "no match community", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP community list\n") - -DEFSH (VTYSH_BGPD, no_set_aggregator_as_cmd_vtysh, - "no set aggregator as", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP aggregator attribute\n" - "AS number of aggregator\n") - -DEFSH (VTYSH_BGPD, bgp_damp_set2_cmd_vtysh, - "bgp dampening <1-45>", - "BGP Specific commands\n" - "Enable route-flap dampening\n" - "Half-life time for the penalty\n") - -DEFSH (VTYSH_OSPF6D, debug_ospf6_all_cmd_vtysh, - "debug ospf6 all", - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Turn on ALL OSPFv3 debugging\n") - -DEFSH (VTYSH_BGPD, ipv6_mbgp_neighbor_received_routes_cmd_vtysh, - "show ipv6 mbgp neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_statistics_cmd_vtysh, - "show ip bgp flap-statistics", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_vpnv4_soft_cmd_vtysh, - "clear ip bgp A.B.C.D vpnv4 unicast soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community3_exact_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD, debug_ripng_packet_cmd_vtysh, - "debug ripng packet", - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng packet\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_timers_cmd_vtysh, - "no timers basic", - "Negate a command or set its defaults\n" - "RIPng timers setup\n" - "Basic timer\n") - -DEFSH (VTYSH_RIPNGD, ripng_route_cmd_vtysh, - "route IPV6ADDR", - "Static route setup\n" - "Set static RIPng route announcement\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_advertise_force_prefix_cmd_vtysh, - "ipv6 ospf6 advertise force-prefix", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Advertising options\n" - "Force advertising prefix, applicable if Loopback or P-to-P\n" - ) - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_out_cmd_vtysh, - "clear ip bgp A.B.C.D out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_external_inter_intra_cmd_vtysh, - "distance ospf external <1-255> inter-area <1-255> intra-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "External routes\n" - "Distance for external routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_hello_interval_addr_cmd_vtysh, - "ip ospf hello-interval <1-65535> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Time between HELLO packets\n" - "Seconds\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_filter_list_cmd_vtysh, - "show bgp ipv6 filter-list WORD", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_BGPD, debug_bgp_update_cmd_vtysh, - "debug bgp updates", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP updates\n") - -DEFSH (VTYSH_BGPD, show_bgp_cmd_vtysh, - "show bgp", - "Show running system information\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, show_bgp_filter_list_cmd_vtysh, - "show bgp filter-list WORD", - "Show running system information\n" - "BGP information\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X)", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbor_received_routes_cmd_vtysh, - "show bgp neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_seq_ge_cmd_vtysh, - "ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M ge <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_soft_out_cmd_vtysh, - "clear ip bgp A.B.C.D soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_address_prefix_list_val_cmd_vtysh, - "no match ip address prefix-list WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_topology_router_lsid_cmd_vtysh, - "show ipv6 ospf6 topology (A.B.C.D|<0-4294967295>) (A.B.C.D|<0-4294967295>)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Inter Area topology information\n" - "Specify Router-ID\n" - "Specify Router-ID\n" - "Specify Link State ID\n" - "Specify Link State ID\n" - ) - -DEFSH (VTYSH_RIPD, ip_rip_authentication_string_cmd_vtysh, - "ip rip authentication string LINE", - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication string\n" - "Authentication string\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_soft_cmd_vtysh, - "clear bgp peer-group WORD soft", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, bgp_timers_cmd_vtysh, - "timers bgp <0-65535> <0-65535>", - "Adjust routing timers\n" - "BGP timers\n" - "Keepalive interval\n" - "Holdtime\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ospf6_metric_routemap_cmd_vtysh, - "no redistribute ospf6 metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, set_metric_cmd_vtysh, - "set metric (<0-4294967295>|<+/-metric>)", - "Set values in destination routing protocol\n" - "Metric value for destination routing protocol\n" - "Metric value\n" - "Add or subtract metric\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_nsm_sub_cmd_vtysh, - "debug ospf nsm (status|events|timers)", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Neighbor State Machine\n" - "NSM Status Information\n" - "NSM Event Information\n" - "NSM Timer Information\n") - -DEFSH (VTYSH_OSPFD, auto_cost_reference_bandwidth_cmd_vtysh, - "auto-cost reference-bandwidth <1-4294967>", - "Calculate OSPF interface cost according to bandwidth\n" - "Use reference bandwidth method to assign OSPF cost\n" - "The reference bandwidth in terms of Mbits per second\n") - -DEFSH (VTYSH_OSPFD, no_refresh_timer_cmd_vtysh, - "no refresh timer", - "Adjust refresh parameters\n" - "Unset refresh timer\n") - -DEFSH (VTYSH_BGPD, no_ip_as_path_all_cmd_vtysh, - "no ip as-path access-list WORD", - "Negate a command or set its defaults\n" - "IP information\n" - "BGP autonomous system path filter\n" - "Specify an access list name\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_OSPF6D, flap_damping_route_cmd_vtysh, - "flap-damping route <0-4294967295> <0-4294967295> " - "<0-4294967295> <0-4294967295>", - "enable flap dampening\n" - "enable route flap dampening\n" - "half-life in second\n" - "reuse value\n" - "suppress value\n" - "t-hold in second (maximum time that the target can be damped)\n" - ) - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_route_prefix_cmd_vtysh, - "show ipv6 ospf6 route (X::X|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Routing table\n" - "match IPv6 prefix\n" - ) - -DEFSH (VTYSH_BGPD, match_origin_cmd_vtysh, - "match origin (egp|igp|incomplete)", - "Match values from routing table\n" - "BGP origin code\n" - "remote EGP\n" - "local IGP\n" - "unknown heritage\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D A.B.C.D A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_BGPD, no_neighbor_timers_connect_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "timers connect", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "BGP per neighbor timers\n" - "BGP connect timer\n") - -DEFSH (VTYSH_BGPD, set_aspath_prepend_cmd_vtysh, - "set as-path prepend .<1-65535>", - "Set values in destination routing protocol\n" - "Prepend string for a BGP AS-path attribute\n" - "Prepend to the as-path\n" - "AS number\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_in_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_regexp_cmd_vtysh, - "show ip bgp regexp .LINE", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_OSPF6D, reload_cmd_vtysh, - "reload", - "Reloads\n") - -DEFSH (VTYSH_BGPD, no_neighbor_weight_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "weight", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Set default weight for routes from this neighbor\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv4_rmap_cmd_vtysh, - "redistribute (connected|kernel|ospf|rip|static) route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_in_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, dump_bgp_routes_interval_cmd_vtysh, - "dump bgp routes-mrt PATH INTERVAL", - "Dump packet\n" - "BGP packet dump\n" - "Dump whole BGP routing table\n" - "Output filename\n" - "Interval of output\n") - -DEFSH (VTYSH_ZEBRA, ipv6_route_pref_cmd_vtysh, - "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) <1-255>", - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n" - "Distance value for this prefix\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_duration_day_month_cmd_vtysh, - "accept-lifetime HH:MM:SS <1-31> MONTH <1993-2035> duration <1-2147483646>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Duration of the key\n" - "Duration seconds\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_dampened_paths_cmd_vtysh, - "show ip bgp dampened-paths", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display paths suppressed due to dampening\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_send_version_num_cmd_vtysh, - "no ip rip send version (1|2)", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Advertisement transmission\n" - "Version control\n" - "Version 1\n" - "Version 2\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_in_cmd_vtysh, - "clear ip bgp peer-group WORD in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_cmd_vtysh, - "no ip community-list WORD (deny|permit) .AA:NN", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_BGPD, no_neighbor_nexthop_self_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "next-hop-self", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Disable the next hop calculation for this neighbor\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_database_cmd_vtysh, - "show ipv6 ospf6 database", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "LSA Database\n" - ) - -DEFSH (VTYSH_ZEBRA, show_ipv6_route_cmd_vtysh, - "show ipv6 route", - "Show running system information\n" - "IP information\n" - "IPv6 routing table\n") - -DEFSH (VTYSH_OSPFD, ospf_network_cmd_vtysh, - "ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)", - "OSPF interface commands\n" - "Network type\n" - "Specify OSPF broadcast multi-access network\n" - "Specify OSPF NBMA network\n" - "Specify OSPF point-to-multipoint network\n" - "Specify OSPF point-to-point network\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_out_cmd_vtysh, - "clear bgp ipv6 peer-group WORD out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, no_ospf_redistribute_source_cmd_vtysh, - "no redistribute (kernel|connected|static|rip|bgp)", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_tags_cmd_vtysh, - "show ip bgp vpnv4 all tags", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Display BGP tags for prefixes\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_fsm_cmd_vtysh, - "no debug bgp fsm", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "Finite State Machine\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_prefix_cmd_vtysh, - "show ip bgp flap-statistics A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_in_cmd_vtysh, - "clear bgp <1-65535> in", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD, no_rip_redistribute_rip_cmd_vtysh, - "no redistribute rip", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Routing Information Protocol (RIP)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_view_route_cmd_vtysh, - "show ip bgp view WORD A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "BGP view name\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_ZEBRA, no_debug_zebra_events_cmd_vtysh, - "no debug zebra events", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra events\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_connected_metric_routemap_cmd_vtysh, - "no redistribute connected metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_seq_le_cmd_vtysh, - "ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M le <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, no_set_ecommunity_rt_val_cmd_vtysh, - "no set extcommunity rt .ASN:nn_or_IP-address:nn", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Route Target extened communityt\n" - "VPN extended community\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbors_cmd_vtysh, - "show ip bgp neighbors", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_OSPFD, no_ospf_distance_cmd_vtysh, - "no distance <1-255>", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "OSPF Administrative distance\n") - -DEFSH (VTYSH_BGPD, bgp_network_mask_natural_cmd_vtysh, - "network A.B.C.D", - "Specify a network to announce via BGP\n" - "Network number\n") - -DEFSH (VTYSH_BGPD, debug_bgp_events_cmd_vtysh, - "debug bgp events", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP events\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_soft_in_cmd_vtysh, - "clear bgp * soft in", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_ge_le_cmd_vtysh, - "ip prefix-list WORD (deny|permit) A.B.C.D/M ge <0-32> le <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_OSPFD, network_area_cmd_vtysh, - "network A.B.C.D/M area (A.B.C.D|<0-4294967295>)", - "Enable routing on an IP network\n" - "OSPF network prefix\n" - "Set the OSPF area ID\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_in_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_paths_cmd_vtysh, - "show ip bgp paths", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Path information\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, no_area_default_cost_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Set the summary-default cost of a NSSA or stub area\n" - "Stub's advertised default summary cost\n") - -DEFSH (VTYSH_OSPFD, no_router_ospf_cmd_vtysh, - "no router ospf", - "Negate a command or set its defaults\n" - "Enable a routing process\n" - "Start OSPF configuration\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_transmit_delay_cmd_vtysh, - "ip ospf transmit-delay <1-65535>", - "IP Information\n" - "OSPF interface commands\n" - "Link state transmit delay\n" - "Seconds\n") - -DEFSH (VTYSH_BGPD, no_bgp_scan_time_val_cmd_vtysh, - "no bgp scan-time <5-60>", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure background scanner interval\n" - "Scanner interval (seconds)\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_all_cmd_vtysh, - "no debug all bgp", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Enable all debugging\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_address_cmd_vtysh, - "show ip bgp flap-statistics A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD, no_match_interface_val_cmd_vtysh, - "no match interface WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match first hop interface of route\n" - "Interface name\n") - -DEFSH (VTYSH_OSPF6D, router_id_cmd_vtysh, - "router-id ROUTER_ID", - "Configure ospf Router-ID.\n" - "specify by IPv4 address notation(e.g. 0.0.0.0)\n") - -DEFSH (VTYSH_BGPD, no_bgp_cluster_id_arg_cmd_vtysh, - "no bgp cluster-id A.B.C.D", - "Negate a command or set its defaults\n" - "BGP information\n" - "Configure Route-Reflector Cluster-id\n" - "Route-Reflector Cluster-id in IP address format\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_topology_cmd_vtysh, - "show ipv6 ospf6 topology", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Inter Area topology information\n" - ) - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_any_host_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip any host A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_RIPD, no_rip_version_val_cmd_vtysh, - "no version <1-2>", - "Negate a command or set its defaults\n" - "Set routing protocol version\n" - "version\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_param2_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_all_cmd_vtysh, - "no ip extcommunity-list (<1-99>|<100-199>)", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (standard)\n" - "Extended Community list number (expanded)\n") - -DEFSH (VTYSH_ZEBRA, no_zebra_interface_cmd_vtysh, - "no interface IFNAME", - "Delete a pseudo interface's configuration\n" - "Interface's name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbors_peer_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_prefix_advertisement_cmd_vtysh, - "ipv6 nd prefix-advertisement IPV6PREFIX VALID PREFERRED [onlink] [autoconfig]", - "IP information\n" - "Neighbor discovery\n" - "Prefix information\n" - "IPv6 prefix\n" - "Valid lifetime in seconds\n" - "Preferred lifetime in seconds\n" - "On link flag\n" - "Autonomous address-configuration flag\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_seq_ge_le_cmd_vtysh, - "ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M ge <0-128> le <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_inter_cmd_vtysh, - "distance ospf inter-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Inter-area routes\n" - "Distance for inter-area routes\n") - -DEFSH (VTYSH_BGPD, set_community_cmd_vtysh, - "set community .AA:NN", - "Set values in destination routing protocol\n" - "BGP community attribute\n" - "Community number in aa:nn format or local-AS|no-advertise|no-export|internet or additive\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_out_cmd_vtysh, - "clear ip bgp <1-65535> out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_name_cmd_vtysh, - "show ipv6 prefix-list WORD", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_natural_cmd_vtysh, - "no network A.B.C.D", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n") - -DEFSH (VTYSH_RIPD, no_rip_passive_interface_cmd_vtysh, - "no passive-interface IFNAME", - "Negate a command or set its defaults\n" - "Suppress routing updates on an interface\n" - "Interface name\n") - -DEFSH (VTYSH_RIPD, no_key_chain_cmd_vtysh, - "no key chain WORD", - "Negate a command or set its defaults\n" - "Authentication key management\n" - "Key-chain management\n" - "Key-chain name\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_set_metric_cmd_vtysh, - "no set metric", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "Metric value for destination routing protocol\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community3_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_in_prefix_filter_cmd_vtysh, - "clear bgp external in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbor_received_prefix_filter_cmd_vtysh, - "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) received prefix-filter", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display information received from a BGP neighbor\n" - "Display the prefixlist filter\n") - -DEFSH (VTYSH_RIPD, no_debug_rip_events_cmd_vtysh, - "no debug rip events", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP events\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_events_cmd_vtysh, - "undebug bgp events", - "Disable debugging functions (see also 'debug')\n" - "BGP information\n" - "BGP events\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp view WORD * ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_in_cmd_vtysh, - "clear bgp external in", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_out_cmd_vtysh, - "clear bgp external out", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_cmd_vtysh, - "no access-list WORD (deny|permit) A.B.C.D/M", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_id_self_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" ") A.B.C.D (self-originate|)", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "Link State ID (as an IP address)\n" - "Self-originated link states\n" - "\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_cmd_vtysh, - "show ip bgp", - "Show running system information\n" - "IP information\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, no_neighbor_remove_private_as_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "remove-private-AS", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Remove private AS number from outbound updates\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_neighbor_routes_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors A.B.C.D routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, neighbor_local_as_no_prepend_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as <1-65535> no-prepend", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a local-as number\n" - "AS number used as local AS\n" - "Do not prepend local-as to updates from ebgp peers\n") - -DEFSH (VTYSH_BGPD, bgp_router_id_cmd_vtysh, - "bgp router-id A.B.C.D", - "BGP information\n" - "Override configured router identifier\n" - "Manually configured router identifier\n") - -DEFSH (VTYSH_BGPD, aggregate_address_summary_as_set_cmd_vtysh, - "aggregate-address A.B.C.D/M summary-only as-set", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_BGPD, neighbor_port_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "port <0-65535>", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Neighbor's BGP port\n" - "TCP port number\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_type_metric_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214>", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Metric for redistributed routes\n" - "OSPF default metric\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_external_cmd_vtysh, - "distance ospf external <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "External routes\n" - "Distance for external routes\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_list_cmd_vtysh, - "show ip bgp community-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_metric_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric <0-16777214>", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "Metric for redistributed routes\n" - "OSPF default metric\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_soft_cmd_vtysh, - "clear bgp ipv6 * soft", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_sequence_number_cmd_vtysh, - "ip prefix-list sequence-number", - "IP information\n" - "Build a prefix list\n" - "Include/exclude sequence numbers in NVGEN\n") - -DEFSH (VTYSH_BGPD, neighbor_maximum_prefix_warning_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> warning-only", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Maximum number of prefix accept from this peer\n" - "maximum no. of prefix limit\n" - "Only give warning message when limit is exceeded\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_next_hop_prefix_list_val_cmd_vtysh, - "no match ip next-hop prefix-list WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_name_all_cmd_vtysh, - "no ip community-list (standard|expanded) WORD", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Add a standard community-list entry\n" - "Add an expanded community-list entry\n" - "Community list name\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_all_cmd_vtysh, - "undebug all bgp", - "Disable debugging functions (see also 'debug')\n" - "Enable all debugging\n" - "BGP information\n") - -DEFSH (VTYSH_OSPFD, no_ospf_default_metric_val_cmd_vtysh, - "no default-metric <0-16777214>", - "Negate a command or set its defaults\n" - "Set metric of redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_routemap_cmd_vtysh, - "default-information originate always route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD, ip_rip_authentication_key_chain_cmd_vtysh, - "ip rip authentication key-chain LINE", - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication key-chain\n" - "name of key-chain\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_le_cmd_vtysh, - "no ipv6 prefix-list WORD (deny|permit) X:X::X:X/M le <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_bgp_metric_cmd_vtysh, - "redistribute bgp metric <0-16>", - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_RIPD, rip_version_cmd_vtysh, - "version <1-2>", - "Set routing protocol version\n" - "version\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_standard2_cmd_vtysh, - "ip extcommunity-list <1-99> (deny|permit)", - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_ipv4_soft_cmd_vtysh, - "clear ip bgp view WORD * ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, ipv6_bgp_neighbor_received_routes_cmd_vtysh, - "show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_vpnv4_soft_cmd_vtysh, - "clear ip bgp <1-65535> vpnv4 unicast soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_set_community_delete_val_cmd_vtysh, - "no set comm-list (<1-99>|<100-199>|WORD) delete", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "set BGP community list (for deletion)\n" - "Community-list number (standard)\n" - "Communitly-list number (expanded)\n" - "Community-list name\n" - "Delete matching communities\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_any_cmd_vtysh, - "no access-list WORD (deny|permit) any", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, neighbor_remove_private_as_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "remove-private-AS", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Remove private AS number from outbound updates\n") - -DEFSH (VTYSH_ZEBRA, ipv6_address_cmd_vtysh, - "ipv6 address X:X::X:X/M", - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IPv6 address (e.g. 3ffe:506::1/48)\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_expanded_cmd_vtysh, - "no ip community-list <100-199> (deny|permit) .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Community list number (expanded)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_standard_cmd_vtysh, - "no ip extcommunity-list <1-99> (deny|permit) .AA:NN", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Extended community attribute in 'rt aa:nn_or_IPaddr:nn' OR 'soo aa:nn_or_IPaddr:nn' format\n") - -DEFSH (VTYSH_OSPF6D, interface_area_passive_cmd_vtysh, - "interface IFNAME area A.B.C.D passive", - "Enable routing on an IPv6 interface\n" - "Interface name(e.g. ep0)\n" - "Set the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" - "Suppress routing updates on an interface\n" - ) - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_seq_le_ge_cmd_vtysh, - "ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M le <0-32> ge <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, bgp_bestpath_compare_router_id_cmd_vtysh, - "bgp bestpath compare-routerid", - "BGP specific commands\n" - "Change the default bestpath selection\n" - "Compare router-id for identical EBGP paths\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_connected_metric_cmd_vtysh, - "no redistribute connected metric", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Metric\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, match_metric_cmd_vtysh, - "match metric <0-4294967295>", - "Match values from routing table\n" - "Match metric of route\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_in_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_mask_any_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D any", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "Any destination host\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_in_prefix_filter_cmd_vtysh, - "clear bgp * in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_ge_cmd_vtysh, - "no ip prefix-list WORD (deny|permit) A.B.C.D/M ge <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_ZEBRA, show_ipv6_route_addr_cmd_vtysh, - "show ipv6 route X:X::X:X", - "Show running system information\n" - "IP information\n" - "IPv6 routing table\n" - "IPv6 Address\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_connected_routemap_cmd_vtysh, - "no redistribute connected route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, ipv6_mbgp_neighbor_advertised_route_cmd_vtysh, - "show ipv6 mbgp neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community_all_cmd_vtysh, - "show bgp ipv6 community", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_soft_in_cmd_vtysh, - "clear ip bgp view WORD * soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, bgp_network_mask_backdoor_cmd_vtysh, - "network A.B.C.D mask A.B.C.D backdoor", - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_BGPD, no_bgp_bestpath_med3_cmd_vtysh, - "no bgp bestpath med missing-as-worst confed", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Treat missing MED as the least preferred one\n" - "Compare MED among confederation paths\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_description_cmd_vtysh, - "no ipv6 prefix-list WORD description", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_out_cmd_vtysh, - "clear bgp ipv6 <1-65535> out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_route_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_OSPFD, ospf_cost_cmd_vtysh, - "ospf cost <1-65535>", - "OSPF interface commands\n" - "Interface cost\n" - "Cost") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged8_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop as-path med", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "As-path attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, no_set_origin_cmd_vtysh, - "no set origin", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP origin code\n") - -DEFSH (VTYSH_ZEBRA, ip_route_distance_cmd_vtysh, - "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) <1-255>", - "IP information\n" - "Establish static routes\n" - "IP destination prefix (e.g. 10.0.0.0/8)\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n" - "Distance value for this route\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community_list_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_BGPD, show_bgp_summary_cmd_vtysh, - "show bgp summary", - "Show running system information\n" - "BGP information\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_static_metric_val_cmd_vtysh, - "no redistribute static metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, no_neighbor_description_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "description .LINE", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Neighbor specific description\n" - "Up to 80 characters describing this neighbor\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_hellointerval_cmd_vtysh, - "ipv6 ospf6 hello-interval HELLO_INTERVAL", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Time between HELLO packets\n" - "<1-65535> Seconds\n" - ) - -DEFSH (VTYSH_BGPD, show_bgp_instance_ipv6_summary_cmd_vtysh, - "show bgp view WORD ipv6 summary", - "Show running system information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Address family\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_OSPFD|VTYSH_BGPD, match_ip_address_cmd_vtysh, - "match ip address (<1-199>|<1300-2699>|WORD)", - "Match values from routing table\n" - "IP information\n" - "Match address of route\n" - "IP access-list number\n" - "IP access-list number (expanded range)\n" - "IP Access-list name\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_summary_as_set_cmd_vtysh, - "no aggregate-address A.B.C.D/M summary-only as-set", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_RIPD, no_rip_network_cmd_vtysh, - "no network (A.B.C.D/M|WORD)", - "Negate a command or set its defaults\n" - "Enable routing on an IP network\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Interface name\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_prefix_cmd_vtysh, - "show ipv6 prefix-list WORD X:X::X:X/M", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_prefix_list_cmd_vtysh, - "show ipv6 bgp prefix-list WORD", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the prefix-list\n" - "IPv6 prefix-list name\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_ge_cmd_vtysh, - "ipv6 prefix-list WORD (deny|permit) X:X::X:X/M ge <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, set_aggregator_as_cmd_vtysh, - "set aggregator as <1-65535> A.B.C.D", - "Set values in destination routing protocol\n" - "BGP aggregator attribute\n" - "AS number of aggregator\n" - "AS number\n" - "IP address of aggregator\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_inter_intra_external_cmd_vtysh, - "distance ospf inter-area <1-255> intra-area <1-255> external <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "External routes\n" - "Distance for external routes\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_key_chain2_cmd_vtysh, - "no ip rip authentication key-chain LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication key-chain\n" - "name of key-chain\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_soft_in_cmd_vtysh, - "clear ip bgp <1-65535> soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, no_ospf_authentication_key_cmd_vtysh, - "no ospf authentication-key", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Authentication password (key)\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_prefix_cmd_vtysh, - "show bgp ipv6 X:X::X:X/M", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "IPv6 prefix <network>/<length>\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged7_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop med as-path", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "Med attribute\n" - "As-path attribute\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged3_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop (as-path|med)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "As-path attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, bgp_bestpath_med2_cmd_vtysh, - "bgp bestpath med confed missing-as-worst", - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Compare MED among confederation paths\n" - "Treat missing MED as the least preferred one\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_standard_nomask_cmd_vtysh, - "no access-list (<1-99>|<1300-1999>) (deny|permit) A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Address to match\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community4_exact_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_metric_type_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> metric-type (1|2)", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "Metric for redistributed routes\n" - "OSPF default metric\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_BGPD, no_bgp_enforce_first_as_cmd_vtysh, - "no bgp enforce-first-as", - "Negate a command or set its defaults\n" - "BGP information\n" - "Enforce the first AS for EBGP routes\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_standard_host_cmd_vtysh, - "access-list (<1-99>|<1300-1999>) (deny|permit) host A.B.C.D", - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "A single host address\n" - "Address to match\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_mask_summary_only_cmd_vtysh, - "no aggregate-address A.B.C.D A.B.C.D summary-only", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_prefix_advertisement_no_val_cmd_vtysh, - "ipv6 nd prefix-advertisement IPV6PREFIX", - "IP information\n" - "Neighbor discovery\n" - "Prefix information\n" - "IPv6 prefix\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_detail_cmd_vtysh, - "show ip prefix-list detail", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Detail of prefix lists\n") - -DEFSH (VTYSH_RIPNGD, debug_ripng_packet_detail_cmd_vtysh, - "debug ripng packet (recv|send) detail", - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng packet\n" - "Debug option set for receive packet\n" - "Debug option set for send packet\n" - "Debug option set detaied information\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_priority_cmd_vtysh, - "no ip ospf priority", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Router priority\n") - -DEFSH (VTYSH_BGPD, no_neighbor_unsuppress_map_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "unsuppress-map WORD", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Route-map to selectively unsuppress suppressed routes\n" - "Name of route map\n") - -DEFSH (VTYSH_BGPD, old_no_ipv6_aggregate_address_cmd_vtysh, - "no ipv6 bgp aggregate-address X:X::X:X/M", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "BGP information\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_seq_le_cmd_vtysh, - "no ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M le <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, no_neighbor_route_map_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "route-map WORD (in|out)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Apply route map to neighbor\n" - "Name of route map\n" - "Apply map to incoming routes\n" - "Apply map to outbound routes\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_advertise_prefix_list_cmd_vtysh, - "ipv6 ospf6 advertise prefix-list WORD", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Advertising options\n" - "Filter prefix using prefix-list\n" - "Prefix list name\n" - ) - -DEFSH (VTYSH_OSPFD, no_area_vlink_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_in_prefix_filter_cmd_vtysh, - "clear ip bgp peer-group WORD in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_bgp_prefix_longer_cmd_vtysh, - "show bgp X:X::X:X/M longer-prefixes", - "Show running system information\n" - "BGP information\n" - "IPv6 prefix <network>/<length>\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_soft_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbors_peer_cmd_vtysh, - "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X)", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_OSPFD, ospf_abr_type_cmd_vtysh, - "ospf abr-type (cisco|ibm|shortcut|standard)", - "OSPF specific commands\n" - "Set OSPF ABR type\n" - "Alternative ABR, cisco implementation\n" - "Alternative ABR, IBM implementation\n" - "Shortcut ABR\n" - "Standard behavior (RFC2328)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_soft_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) soft", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPD, rip_redistribute_type_metric_cmd_vtysh, - "redistribute (kernel|connected|static|ospf|bgp) metric <0-16>", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_ZEBRA, no_shutdown_if_cmd_vtysh, - "no shutdown", - "Negate a command or set its defaults\n" - "Shutdown the selected interface\n") - -DEFSH (VTYSH_BGPD, set_originator_id_cmd_vtysh, - "set originator-id A.B.C.D", - "Set values in destination routing protocol\n" - "BGP originator ID attribute\n" - "IP address of originator\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_description_cmd_vtysh, - "ipv6 prefix-list WORD description .LINE", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n" - "Up to 80 characters describing this prefix-list\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_metric_type_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> metric-type (1|2) route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "Metric for redistributed routes\n" - "OSPF default metric\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_filter_cmd_vtysh, - "no debug bgp filters", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP filters\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_neighbor_routes_cmd_vtysh, - "show ip bgp vpnv4 all neighbors A.B.C.D routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_nsm_cmd_vtysh, - "no debug ospf nsm", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Neighbor State Machine") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_type_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric-type (1|2)", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_OSPFD, no_neighbor_priority_cmd_vtysh, - "no neighbor A.B.C.D priority <0-255>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor IP address\n" - "Neighbor Priority\n" - "Priority\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_forwarding_cmd_vtysh, - "no ipv6 forwarding", - "Negate a command or set its defaults\n" - "IP information\n" - "Doesn't forward IPv6 protocol packet") - -DEFSH (VTYSH_RIPD, no_debug_rip_packet_cmd_vtysh, - "no debug rip packet", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP packet\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_le_ge_cmd_vtysh, - "ip prefix-list WORD (deny|permit) A.B.C.D/M le <0-32> ge <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_cmd_vtysh, - "ip prefix-list WORD (deny|permit) (A.B.C.D/M|any)", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_info_cmd_vtysh, - "show ip bgp community-info", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "List all bgp community information\n") - -DEFSH (VTYSH_OSPF6D, debug_ospf6_damp_cmd_vtysh, - "debug ospf6 damp", - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Flap-dampening information\n" - ) - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged9_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med next-hop as-path", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "Nexthop attribute\n" - "As-path attribute\n") - -DEFSH (VTYSH_BGPD, no_set_ecommunity_soo_val_cmd_vtysh, - "no set extcommunity soo .ASN:nn_or_IP-address:nn", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Site-of-Origin extended community\n" - "VPN extended community\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_remark_cmd_vtysh, - "no access-list (<1-99>|<100-199>|<1300-1999>|<2000-2699>|WORD) remark", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP extended access list\n" - "IP standard access list (expanded range)\n" - "IP extended access list (expanded range)\n" - "IP zebra access-list\n" - "Access list entry comment\n") - -DEFSH (VTYSH_ZEBRA, debug_zebra_packet_direct_cmd_vtysh, - "debug zebra packet (recv|send)", - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra packet\n" - "Debug option set for receive packet\n" - "Debug option set for send packet\n") - -DEFSH (VTYSH_BGPD, no_set_ipv6_nexthop_global_cmd_vtysh, - "no set ipv6 next-hop global", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 global address\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_soft_out_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, no_bgp_always_compare_med_cmd_vtysh, - "no bgp always-compare-med", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Allow comparing MED from different neighbors\n") - -DEFSH (VTYSH_ZEBRA, show_ipv6_route_prefix_cmd_vtysh, - "show ipv6 route X:X::X:X/M", - "Show running system information\n" - "IP information\n" - "IPv6 routing table\n" - "IPv6 prefix\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_instance_neighbors_peer_cmd_vtysh, - "show ip bgp view WORD neighbors (A.B.C.D|X:X::X:X)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_soft_out_cmd_vtysh, - "clear bgp ipv6 <1-65535> soft out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_route_cmd_vtysh, - "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE)", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_in_prefix_filter_cmd_vtysh, - "clear ip bgp external in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_neighbor_version_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "version", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Neighbor's BGP version\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_route_ospf6_external_cmd_vtysh, - "show ipv6 ospf6 route redistribute", - "Show running system information\n" - "IPv6 Information\n" - "Routing Table\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "redistributing External information\n" - ) - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_vpnv4_soft_in_cmd_vtysh, - "clear ip bgp A.B.C.D vpnv4 unicast soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_soft_in_cmd_vtysh, - "clear bgp ipv6 * soft in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPF6D, ospf6_redistribute_routemap_cmd_vtysh, - "redistribute (static|kernel|connected|ripng|bgp) route-map WORD", - "Redistribute\n" - "Static routes\n" - "Kernel route\n" - "Connected route\n" - "RIPng route\n" - "BGP route\n" - "Route map reference\n" - "Route map name\n" - ) - -DEFSH (VTYSH_BGPD, set_ecommunity_rt_cmd_vtysh, - "set extcommunity rt .ASN:nn_or_IP-address:nn", - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Route Target extened communityt\n" - "VPN extended community\n") - -DEFSH (VTYSH_BGPD, neighbor_local_as_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as <1-65535>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a local-as number\n" - "AS number used as local AS\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, show_ipv6_access_list_name_cmd_vtysh, - "show ipv6 access-list WORD", - "Show running system information\n" - "IPv6 information\n" - "List IPv6 access lists\n" - "IPv6 zebra access-list\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_standard_host_cmd_vtysh, - "no access-list (<1-99>|<1300-1999>) (deny|permit) host A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "A single host address\n" - "Address to match\n") - -DEFSH (VTYSH_OSPFD, no_area_import_list_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) import-list NAME", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Unset the filter for networks announced to other areas\n" - "Name of the access-list\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_cidr_only_cmd_vtysh, - "show ip bgp cidr-only", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display only routes with non-natural netmasks\n") - -DEFSH (VTYSH_RIPNGD, ripng_timers_cmd_vtysh, - "timers basic <0-65535> <0-65535> <0-65535>", - "RIPng timers setup\n" - "Basic timer\n" - "Routing table update timer value in second. Default is 30.\n" - "Routing information timeout timer. Default is 180.\n" - "Garbage collection timer. Default is 120.\n") - -DEFSH (VTYSH_BGPD, neighbor_transparent_as_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "transparent-as", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Do not append my AS number even peer is EBGP peer\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_expanded_cmd_vtysh, - "ip extcommunity-list <100-199> (deny|permit) .LINE", - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (expanded)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_RIPD, no_router_rip_cmd_vtysh, - "no router rip", - "Negate a command or set its defaults\n" - "Enable a routing process\n" - "Routing Information Protocol (RIP)\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_le_cmd_vtysh, - "no ip prefix-list WORD (deny|permit) A.B.C.D/M le <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_route_cmd_vtysh, - "show ip bgp A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_seq_ge_le_cmd_vtysh, - "ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M ge <0-32> le <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_neighbor_advertised_routes_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors A.B.C.D advertised-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_OSPFD, ospf_priority_cmd_vtysh, - "ospf priority <0-255>", - "OSPF interface commands\n" - "Router priority\n" - "Priority\n") - -DEFSH (VTYSH_OSPFD, ospf_hello_interval_cmd_vtysh, - "ospf hello-interval <1-65535>", - "OSPF interface commands\n" - "Time between HELLO packets\n" - "Seconds\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_cmd_vtysh, - "no network A.B.C.D mask A.B.C.D", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_summary_only_cmd_vtysh, - "no aggregate-address A.B.C.D/M summary-only", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_RIPD, rip_redistribute_type_cmd_vtysh, - "redistribute (kernel|connected|static|ospf|bgp)", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_prefix_first_match_cmd_vtysh, - "show ipv6 prefix-list WORD X:X::X:X/M first-match", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "First matched prefix\n") - -DEFSH (VTYSH_BGPD, neighbor_capability_orf_prefix_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "capability orf prefix-list (both|send|receive)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise ORF capability to the peer\n" - "Advertise prefixlist ORF capability to this neighbor\n" - "Capability to SEND and RECEIVE the ORF to/from this neighbor\n" - "Capability to RECEIVE the ORF from this neighbor\n" - "Capability to SEND the ORF to this neighbor\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_soft_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_neighbor_set_peer_group_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "peer-group WORD", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Member of the peer-group\n" - "peer-group name\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_soft_out_cmd_vtysh, - "clear ip bgp view WORD * soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, bgp_network_mask_route_map_cmd_vtysh, - "network A.B.C.D mask A.B.C.D route-map WORD", - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_BGPD, aggregate_address_as_set_cmd_vtysh, - "aggregate-address A.B.C.D/M as-set", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_topology_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D topology", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Shortest Path First tree information\n" - "Displays SPF topology table\n") - -DEFSH (VTYSH_BGPD, no_neighbor_peer_group_remote_as_cmd_vtysh, - "no neighbor WORD remote-as <1-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor tag\n" - "Specify a BGP neighbor\n" - "AS number\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_seq_ge_cmd_vtysh, - "no ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M ge <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_static_routemap_cmd_vtysh, - "no redistribute static route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD, rip_network_cmd_vtysh, - "network (A.B.C.D/M|WORD)", - "Enable routing on an IP network\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Interface name\n") - -DEFSH (VTYSH_ZEBRA, ip_route_mask_cmd_vtysh, - "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0)", - "IP information\n" - "Establish static routes\n" - "IP destination prefix\n" - "IP destination prefix mask\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_regexp_cmd_vtysh, - "show bgp ipv6 regexp .LINE", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_RIPD, debug_rip_zebra_cmd_vtysh, - "debug rip zebra", - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP and ZEBRA communication\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_match_metric_val_cmd_vtysh, - "no match metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match metric of route\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, no_match_ipv6_address_cmd_vtysh, - "no match ipv6 address WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IPv6 information\n" - "Match IPv6 address of route\n" - "IPv6 access-list name\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_neighbor_cmd_vtysh, - "show ip ospf neighbor", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community_list_cmd_vtysh, - "show ipv6 mbgp community-list WORD", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_default_metric_val_cmd_vtysh, - "no default-metric <1-16>", - "Negate a command or set its defaults\n" - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_RIPNGD, no_debug_ripng_zebra_cmd_vtysh, - "no debug ripng zebra", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng and zebra communication\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_any_cmd_vtysh, - "no ipv6 access-list WORD (deny|permit) any", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any prefixi to match\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_ge_cmd_vtysh, - "no ipv6 prefix-list WORD (deny|permit) X:X::X:X/M ge <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_ZEBRA, no_ip_forwarding_cmd_vtysh, - "no ip forwarding", - "Negate a command or set its defaults\n" - "IP information\n" - "Turn off IP forwarding") - -DEFSH (VTYSH_BGPD, no_set_aspath_prepend_val_cmd_vtysh, - "no set as-path prepend .<1-65535>", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "Prepend string for a BGP AS-path attribute\n" - "Prepend to the as-path\n" - "AS number\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged4_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med (as-path|next-hop)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "As-path attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_id_adv_router_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" ") A.B.C.D adv-router A.B.C.D", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "Link State ID (as an IP address)\n" - "Advertising Router link states\n" - "Advertising Router (as an IP address)\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_le_cmd_vtysh, - "ip prefix-list WORD (deny|permit) A.B.C.D/M le <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD, match_interface_cmd_vtysh, - "match interface WORD", - "Match values from routing table\n" - "Match first hop interface of route\n" - "Interface name\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_authentication_cmd_vtysh, - "no ip ospf authentication", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n") - -DEFSH (VTYSH_OSPFD, no_area_range_advertise_cost_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise cost <0-16777215>", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "Advertise this range (default)\n" - "User specified metric for this range\n" - "Advertised metric for this range\n") - -DEFSH (VTYSH_BGPD, no_bgp_default_local_preference_val_cmd_vtysh, - "no bgp default local-preference <0-4294967295>", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Configure BGP defaults\n" - "local preference (higher=more preferred)\n" - "Configure default local preference value\n") - -DEFSH (VTYSH_OSPFD, ospf_rfc1583_flag_cmd_vtysh, - "ospf rfc1583compatibility", - "OSPF specific commands\n" - "Enable the RFC1583Compatibility flag\n") - -DEFSH (VTYSH_OSPFD, area_filter_list_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Filter networks between OSPF areas\n" - "Filter prefixes between OSPF areas\n" - "Name of an IP prefix-list\n" - "Filter networks sent to this area\n" - "Filter networks sent from this area\n") - -DEFSH (VTYSH_RIPD, ip_rip_send_version_1_cmd_vtysh, - "ip rip send version 1 2", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement transmission\n" - "Version control\n" - "RIP version 1\n" - "RIP version 2\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community3_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_ra_interval_cmd_vtysh, - "no ipv6 nd ra-interval", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Router Advertisement interval\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_vpnv4_in_cmd_vtysh, - "clear ip bgp * vpnv4 unicast in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, bgp_network_import_check_cmd_vtysh, - "bgp network import-check", - "BGP specific commands\n" - "BGP network command\n" - "Check BGP network route exists in IGP\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_soft_out_cmd_vtysh, - "clear bgp ipv6 peer-group WORD soft out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_priority_cmd_vtysh, - "ip ospf priority <0-255>", - "IP Information\n" - "OSPF interface commands\n" - "Router priority\n" - "Priority\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_lsa_cmd_vtysh, - "debug ospf lsa", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Link State Advertisement\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_prefix_longer_cmd_vtysh, - "show ip route A.B.C.D/M longer-prefixes", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Show route matching the specified Network/Mask pair only\n") - -DEFSH (VTYSH_BGPD, bgp_always_compare_med_cmd_vtysh, - "bgp always-compare-med", - "BGP specific commands\n" - "Allow comparing MED from different neighbors\n") - -DEFSH (VTYSH_OSPFD, ospf_distribute_list_out_cmd_vtysh, - "distribute-list WORD out (kernel|connected|static|rip|bgp)", - "Filter networks in routing updates\n" - "Access-list name\n" - "Filter outgoing routing updates\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community3_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPD, match_ip_next_hop_cmd_vtysh, - "match ip next-hop WORD", - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n" - "IP access-list name\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_prefix_cmd_vtysh, - "show ip prefix-list WORD A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, clear_ipv6_prefix_list_name_cmd_vtysh, - "clear ipv6 prefix-list WORD", - "Reset functions\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_soft_cmd_vtysh, - "clear bgp * soft", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_mask_cmd_vtysh, - "no aggregate-address A.B.C.D A.B.C.D", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n") - -DEFSH (VTYSH_RIPD, key_string_cmd_vtysh, - "key-string LINE", - "Set key string\n" - "The key\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_route_cmd_vtysh, - "show ipv6 bgp X:X::X:X", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_BGPD, show_bgp_community2_exact_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ospf6_cmd_vtysh, - "no redistribute ospf6", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_address_prefix_list_cmd_vtysh, - "no match ip address prefix-list", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match address of route\n" - "Match entries of prefix-lists\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_any_cmd_vtysh, - "access-list WORD (deny|permit) any", - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n") - -DEFSH (VTYSH_OSPFD, no_neighbor_poll_interval_cmd_vtysh, - "no neighbor A.B.C.D poll-interval <1-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor IP address\n" - "Dead Neighbor Polling interval\n" - "Seconds\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_adv_router_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" ") adv-router A.B.C.D", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "Advertising Router link states\n" - "Advertising Router (as an IP address)\n") - -DEFSH (VTYSH_ZEBRA, ipv6_route_cmd_vtysh, - "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE)", - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_authentication_addr_cmd_vtysh, - "no ip ospf authentication A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n" - "Address of interface") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_host_mask_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D A.B.C.D A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community4_exact_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, clear_ipv6_prefix_list_name_prefix_cmd_vtysh, - "clear ipv6 prefix-list WORD X:X::X:X/M", - "Reset functions\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_BGPD, no_set_aspath_prepend_cmd_vtysh, - "no set as-path prepend", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "Prepend string for a BGP AS-path attribute\n" - "Prepend to the as-path\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_summary_cmd_vtysh, - "show bgp ipv6 summary", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_name_standard2_cmd_vtysh, - "ip extcommunity-list standard WORD (deny|permit)", - "IP information\n" - "Add a extended community list entry\n" - "Specify standard extcommunity-list\n" - "Extended Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n") - -DEFSH (VTYSH_RIPD, rip_route_cmd_vtysh, - "route A.B.C.D/M", - "RIP static route configuration\n" - "IP prefix <network>/<length>\n") - -DEFSH (VTYSH_BGPD, ip_community_list_standard_cmd_vtysh, - "ip community-list <1-99> (deny|permit) .AA:NN", - "IP information\n" - "Add a community list entry\n" - "Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_soft_out_cmd_vtysh, - "clear bgp * soft out", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbor_received_prefix_filter_cmd_vtysh, - "show bgp neighbors (A.B.C.D|X:X::X:X) received prefix-filter", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display information received from a BGP neighbor\n" - "Display the prefixlist filter\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_ripng_cmd_vtysh, - "redistribute ripng", - "Redistribute information from another routing protocol\n" - "RIPng route\n") - -DEFSH (VTYSH_BGPD, no_neighbor_advertise_interval_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "advertisement-interval <0-600>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") - -DEFSH (VTYSH_BGPD, no_match_aspath_cmd_vtysh, - "no match as-path", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP AS path list\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_soft_in_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) soft in", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_summary_cmd_vtysh, - "show ipv6 bgp summary", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_BGPD, neighbor_capability_route_refresh_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "capability route-refresh", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise route-refresh capability to this neighbor\n") - -DEFSH (VTYSH_BGPD, bgp_damp_unset2_cmd_vtysh, - "no bgp dampening <1-45> <1-20000> <1-20000> <1-255>", - "Negate a command or set its defaults\n" - "BGP Specific commands\n" - "Enable route-flap dampening\n" - "Half-life time for the penalty\n" - "Value to start reusing a route\n" - "Value to start suppressing a route\n" - "Maximum duration to suppress a stable route\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_vpnv4_soft_in_cmd_vtysh, - "clear ip bgp <1-65535> vpnv4 unicast soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ospf6_metric_cmd_vtysh, - "no redistribute ospf6 metric", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Metric\n") - -DEFSH (VTYSH_BGPD, no_neighbor_prefix_list_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "prefix-list WORD (in|out)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Filter updates to/from this neighbor\n" - "Name of a prefix list\n" - "Filter incoming updates\n" - "Filter outgoing updates\n") - -DEFSH (VTYSH_BGPD, bgp_network_route_map_cmd_vtysh, - "network A.B.C.D/M route-map WORD", - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_authkey_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) " - "(authentication-key|) AUTH_KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" - "Authentication password (key)\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_damp_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) dampened-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the dampened routes received from neighbor\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_transmit_delay_addr_cmd_vtysh, - "no ip ospf transmit-delay A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Link state transmit delay\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged1_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged (as-path|next-hop|med)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, bgp_network_cmd_vtysh, - "network A.B.C.D/M", - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_scan_cmd_vtysh, - "show ip bgp scan", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP scan status\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_in_prefix_filter_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) in prefix-filter", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig inbound update\n" - "Push out the existing ORF prefix-list\n") - -DEFSH (VTYSH_RIPD, rip_offset_list_ifname_cmd_vtysh, - "offset-list WORD (in|out) <0-16> IFNAME", - "Modify RIP metric\n" - "Access-list name\n" - "For incoming updates\n" - "For outgoing updates\n" - "Metric value\n" - "Interface to match\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_rmap_onmatch_next_cmd_vtysh, - "no on-match next", - "Negate a command or set its defaults\n" - "Exit policy on matches\n" - "Next clause\n") - -DEFSH (VTYSH_OSPF6D, interface_area_cmd_vtysh, - "interface IFNAME area A.B.C.D", - "Enable routing on an IPv6 interface\n" - "Interface name(e.g. ep0)\n" - "Set the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" - ) - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_kernel_routemap_cmd_vtysh, - "redistribute kernel route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, bgp_default_local_preference_cmd_vtysh, - "bgp default local-preference <0-4294967295>", - "BGP specific commands\n" - "Configure BGP defaults\n" - "local preference (higher=more preferred)\n" - "Configure default local preference value\n") - -DEFSH (VTYSH_BGPD, bgp_network_mask_natural_backdoor_cmd_vtysh, - "network A.B.C.D backdoor", - "Specify a network to announce via BGP\n" - "Network number\n" - "Specify a BGP backdoor route\n") - -DEFSH (VTYSH_BGPD, show_bgp_community_all_cmd_vtysh, - "show bgp community", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_static_cmd_vtysh, - "redistribute static", - "Redistribute information from another routing protocol\n" - "Static routes\n") - -DEFSH (VTYSH_BGPD, neighbor_prefix_list_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "prefix-list WORD (in|out)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Filter updates to/from this neighbor\n" - "Name of a prefix list\n" - "Filter incoming updates\n" - "Filter outgoing updates\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_fsm_cmd_vtysh, - "undebug bgp fsm", - "Disable debugging functions (see also 'debug')\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "Finite State Machine\n") - -DEFSH (VTYSH_ZEBRA, show_zebra_client_cmd_vtysh, - "show zebra client", - "Show running system information\n" - "Zebra information" - "Client information") - -DEFSH (VTYSH_RIPD, rip_distance_source_access_list_cmd_vtysh, - "distance <1-255> A.B.C.D/M WORD", - "Administrative distance\n" - "Distance value\n" - "IP source prefix\n" - "Access list name\n") - -DEFSH (VTYSH_RIPNGD, ripng_passive_interface_cmd_vtysh, - "passive-interface IFNAME", - "Suppress routing updates on an interface\n" - "Interface name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_received_routes_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_BGPD, dump_bgp_all_cmd_vtysh, - "dump bgp all PATH", - "Dump packet\n" - "BGP packet dump\n" - "Dump all BGP packets\n" - "Output filename\n") - -DEFSH (VTYSH_ZEBRA, no_debug_zebra_packet_cmd_vtysh, - "no debug zebra packet", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra packet\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_route_map_cmd_vtysh, - "no network A.B.C.D/M route-map WORD", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbor_received_routes_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_soft_out_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) soft out", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_ZEBRA, ip_address_cmd_vtysh, - "ip address A.B.C.D/M", - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP address (e.g. 10.0.0.1/8)\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_route_pref_cmd_vtysh, - "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) <1-255>", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n" - "Distance value for this prefix\n") - -DEFSH (VTYSH_ZEBRA, ipv6_route_ifname_cmd_vtysh, - "ipv6 route X:X::X:X/M X:X::X:X INTERFACE", - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n") - -DEFSH (VTYSH_BGPD, show_bgp_regexp_cmd_vtysh, - "show bgp regexp .LINE", - "Show running system information\n" - "BGP information\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_BGPD, show_debugging_bgp_cmd_vtysh, - "show debugging bgp", - "Show running system information\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_in_cmd_vtysh, - "clear ip bgp <1-65535> in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPF6D, interface_area_plist_cmd_vtysh, - "interface IFNAME area A.B.C.D prefix-list WORD", - "Enable routing on an IPv6 interface\n" - "Interface name(e.g. ep0)\n" - "Set the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" - "Advertise I/F Address only match entries of prefix-list\n" - "IPv6 prefix-list name\n" - ) - -DEFSH (VTYSH_OSPFD, no_ip_ospf_transmit_delay_cmd_vtysh, - "no ip ospf transmit-delay", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Link state transmit delay\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_out_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_type_cmd_vtysh, - "default-information originate metric-type (1|2)", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_name_seq_cmd_vtysh, - "show ipv6 prefix-list WORD seq <1-4294967295>", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_soft_cmd_vtysh, - "clear ip bgp A.B.C.D soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_bgp_route_cmd_vtysh, - "show bgp X:X::X:X", - "Show running system information\n" - "BGP information\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged3_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop (as-path|med)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "As-path attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_intra_external_cmd_vtysh, - "distance ospf intra-area <1-255> external <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Intra-area routes\n" - "Distance for intra-area routes\n" - "External routes\n" - "Distance for external routes\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_in_cmd_vtysh, - "clear ip bgp A.B.C.D in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_dead_interval_addr_cmd_vtysh, - "ip ospf dead-interval <1-65535> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n" - "Seconds\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_type_routemap_cmd_vtysh, - "default-information originate metric-type (1|2) route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_host_any_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D any", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "Any destination host\n") - -DEFSH (VTYSH_BGPD, neighbor_allowas_in_arg_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "allowas-in <1-10>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Accept as-path with my AS present in it\n" - "Number of occurances of AS number\n") - -DEFSH (VTYSH_BGPD, neighbor_ebgp_multihop_ttl_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "ebgp-multihop <1-255>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_keepalive_cmd_vtysh, - "no debug bgp keepalives", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP keepalives\n") - -DEFSH (VTYSH_BGPD, show_bgp_community2_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_priority_addr_cmd_vtysh, - "no ip ospf priority A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Router priority\n" - "Address of interface") - -DEFSH (VTYSH_RIPD, no_rip_default_metric_cmd_vtysh, - "no default-metric", - "Negate a command or set its defaults\n" - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_ZEBRA, no_bandwidth_if_val_cmd_vtysh, - "no bandwidth <1-10000000>", - "Negate a command or set its defaults\n" - "Set bandwidth informational parameter\n" - "Bandwidth in kilobits\n") - -DEFSH (VTYSH_RIPD, send_lifetime_infinite_month_day_cmd_vtysh, - "send-lifetime HH:MM:SS MONTH <1-31> <1993-2035> infinite", - "Set send lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Never expires") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_bgp_routemap_cmd_vtysh, - "no redistribute bgp route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_vpnv4_network_cmd_vtysh, - "no network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Specify Route Distinguisher\n" - "VPN Route Distinguisher\n" - "BGP tag\n" - "tag value\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_filter_list_cmd_vtysh, - "show ip bgp filter-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_route_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Network in the BGP routing table to display\n") - -DEFSH (VTYSH_BGPD, undebug_bgp_keepalive_cmd_vtysh, - "undebug bgp keepalives", - "Disable debugging functions (see also 'debug')\n" - "BGP information\n" - "BGP keepalives\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_ism_cmd_vtysh, - "no debug ospf ism", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Interface State Machine") - -DEFSH (VTYSH_RIPD, send_lifetime_duration_day_month_cmd_vtysh, - "send-lifetime HH:MM:SS <1-31> MONTH <1993-2035> duration <1-2147483646>", - "Set send lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Duration of the key\n" - "Duration seconds\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged5_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path next-hop med", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_soft_in_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD, rip_default_information_originate_cmd_vtysh, - "default-information originate", - "Control distribution of default route\n" - "Distribute a default route\n") - -DEFSH (VTYSH_RIPD, rip_default_metric_cmd_vtysh, - "default-metric <1-16>", - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, bgp_confederation_identifier_cmd_vtysh, - "bgp confederation identifier <1-65535>", - "BGP specific commands\n" - "AS confederation parameters\n" - "AS number\n" - "Set routing domain confederation AS\n") - -DEFSH (VTYSH_RIPD, no_key_string_cmd_vtysh, - "no key-string [LINE]", - "Negate a command or set its defaults\n" - "Unset key string\n" - "The key\n") - -DEFSH (VTYSH_BGPD, debug_bgp_update_direct_cmd_vtysh, - "debug bgp updates (in|out)", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP updates\n" - "Inbound updates\n" - "Outbound updates\n") - -DEFSH (VTYSH_OSPFD, no_auto_cost_reference_bandwidth_cmd_vtysh, - "no auto-cost reference-bandwidth", - "Negate a command or set its defaults\n" - "Calculate OSPF interface cost according to bandwidth\n" - "Use reference bandwidth method to assign OSPF cost\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_all_cmd_vtysh, - "no ip community-list (WORD|<1-99>|<100-199>)", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Community list name\n" - "Community list number (standard)\n" - "Community list number (expanded)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_filter_list_cmd_vtysh, - "show ip bgp flap-statistics filter-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_summary_name_cmd_vtysh, - "show ipv6 prefix-list summary WORD", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n" - "Summary of prefix lists\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_args_authkey_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) (message-digest|null) " - "(authentication-key|) AUTH_KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" "Use null authentication\n" "Use message-digest authentication\n" - "Authentication password (key)\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, bgp_network_mask_natural_route_map_cmd_vtysh, - "network A.B.C.D route-map WORD", - "Specify a network to announce via BGP\n" - "Network number\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_ZEBRA, show_interface_cmd_vtysh, - "show interface [IFNAME]", - "Show running system information\n" - "Interface status and configuration\n" - "Inteface name\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_cmd_vtysh, - "show bgp ipv6", - "Show running system information\n" - "BGP information\n" - "Address family\n") - -DEFSH (VTYSH_BGPD, match_community_exact_cmd_vtysh, - "match community (<1-99>|<100-199>|WORD) exact-match", - "Match values from routing table\n" - "Match BGP community list\n" - "Community-list number (standard)\n" - "Community-list number (expanded)\n" - "Community-list name\n" - "Do exact matching of communities\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_vpnv4_soft_out_cmd_vtysh, - "clear ip bgp <1-65535> vpnv4 unicast soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_description_cmd_vtysh, - "ip prefix-list WORD description .LINE", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n" - "Up to 80 characters describing this prefix-list\n") - -DEFSH (VTYSH_ZEBRA, ipv6_route_ifname_pref_cmd_vtysh, - "ipv6 route X:X::X:X/M X:X::X:X INTERFACE <1-255>", - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n" - "Distance value for this prefix\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv6_metric_cmd_vtysh, - "redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295>", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_RIPD, rip_neighbor_cmd_vtysh, - "neighbor A.B.C.D", - "Specify a neighbor router\n" - "Neighbor address\n") - -DEFSH (VTYSH_RIPD, no_rip_default_metric_val_cmd_vtysh, - "no default-metric <1-16>", - "Negate a command or set its defaults\n" - "Set a metric of redistribute routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_cmd_vtysh, - "show ipv6 bgp", - "Show running system information\n" - "IP information\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, neighbor_route_reflector_client_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "route-reflector-client", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Configure a neighbor as Route Reflector client\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_soft_cmd_vtysh, - "clear ip bgp * soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_host_mask_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D A.B.C.D A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_standard_cmd_vtysh, - "ip extcommunity-list <1-99> (deny|permit) .AA:NN", - "IP information\n" - "Add a extended community list entry\n" - "Extended Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Extended community attribute in 'rt aa:nn_or_IPaddr:nn' OR 'soo aa:nn_or_IPaddr:nn' format\n") - -DEFSH (VTYSH_BGPD, no_bgp_config_type_cmd_vtysh, - "no bgp config-type", - "Negate a command or set its defaults\n" - "BGP information\n" - "Display configuration type\n") - -DEFSH (VTYSH_BGPD, no_neighbor_filter_list_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "filter-list WORD (in|out)", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Establish BGP filters\n" - "AS path access-list name\n" - "Filter incoming routes\n" - "Filter outgoing routes\n") - -DEFSH (VTYSH_RIPD, ip_rip_receive_version_1_cmd_vtysh, - "ip rip receive version 1 2", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement reception\n" - "Version control\n" - "RIP version 1\n" - "RIP version 2\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_events_cmd_vtysh, - "no debug bgp events", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP events\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_cmd_vtysh, - "clear bgp ipv6 peer-group WORD", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n") - -DEFSH (VTYSH_BGPD, no_neighbor_port_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "port <0-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Neighbor's BGP port\n" - "TCP port number\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community3_exact_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPD, no_key_cmd_vtysh, - "no key <0-2147483647>", - "Negate a command or set its defaults\n" - "Delete a key\n" - "Key identifier number\n") - -DEFSH (VTYSH_BGPD, ipv6_bgp_network_cmd_vtysh, - "network X:X::X:X/M", - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>\n") - -DEFSH (VTYSH_BGPD, ipv6_bgp_neighbor_routes_cmd_vtysh, - "show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, ip_community_list_name_standard2_cmd_vtysh, - "ip community-list standard WORD (deny|permit)", - "IP information\n" - "Add a community list entry\n" - "Add a standard community-list entry\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n") - -DEFSH (VTYSH_OSPFD, no_refresh_timer_val_cmd_vtysh, - "no refresh timer <10-1800>", - "Adjust refresh parameters\n" - "Unset refresh timer\n" - "Timer value in seconds\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_name_expanded_cmd_vtysh, - "ip extcommunity-list expanded WORD (deny|permit) .LINE", - "IP information\n" - "Add a extended community list entry\n" - "Specify expanded extcommunity-list\n" - "Extended Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_cmd_vtysh, - "clear bgp <1-65535>", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n") - -DEFSH (VTYSH_OSPF6D, no_redistribute_ospf6_cmd_vtysh, - "no redistribute ospf6", - "Negate a command or set its defaults\n" - "Redistribute control\n" - "OSPF6 route\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, no_area_export_list_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) export-list NAME", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Unset the filter for networks announced to other areas\n" - "Name of the access-list\n") - -DEFSH (VTYSH_OSPFD, no_ospf_hello_interval_cmd_vtysh, - "no ospf hello-interval", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Time between HELLO packets\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_filter_list_cmd_vtysh, - "show ipv6 mbgp filter-list WORD", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_RIPD, debug_rip_packet_direct_cmd_vtysh, - "debug rip packet (recv|send)", - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP packet\n" - "RIP receive packet\n" - "RIP send packet\n") - -DEFSH (VTYSH_BGPD, no_set_ecommunity_rt_cmd_vtysh, - "no set extcommunity rt", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Route Target extened communityt\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community_list_cmd_vtysh, - "show bgp ipv6 community-list WORD", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_OSPFD, ospf_router_id_cmd_vtysh, - "ospf router-id A.B.C.D", - "OSPF specific commands\n" - "router-id for the OSPF process\n" - "OSPF router-id in IP address format\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_in_prefix_filter_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig inbound update\n" - "Push out the existing ORF prefix-list\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_cmd_vtysh, - "clear bgp ipv6 *", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD, no_match_interface_cmd_vtysh, - "no match interface", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match first hop interface of route\n") - -DEFSH (VTYSH_ZEBRA, bandwidth_if_cmd_vtysh, - "bandwidth <1-10000000>", - "Set bandwidth informational parameter\n" - "Bandwidth in kilobits\n") - -DEFSH (VTYSH_OSPF6D, no_debug_ospf6_damp_cmd_vtysh, - "no debug ospf6 damp", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Flap-dampening information\n" - ) - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_camp_config_cmd_vtysh, - "show ipv6 ospf6 damp config", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Flap-dampening information\n" - "shows dampening configuration\n" - ) - -DEFSH (VTYSH_OSPF6D, show_version_ospf6_cmd_vtysh, - "show version ospf6", - "Show running system information\n" - "Displays ospf6d version\n") - -DEFSH (VTYSH_BGPD, no_neighbor_route_server_client_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "route-server-client", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Configure a neighbor as Route Server client\n") - -DEFSH (VTYSH_ZEBRA, debug_zebra_packet_detail_cmd_vtysh, - "debug zebra packet (recv|send) detail", - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra packet\n" - "Debug option set for receive packet\n" - "Debug option set for send packet\n" - "Debug option set detaied information\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_ripng_cmd_vtysh, - "no redistribute ripng", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "RIPng route\n") - -DEFSH (VTYSH_RIPD, no_rip_split_horizon_cmd_vtysh, - "no ip split-horizon", - "Negate a command or set its defaults\n" - "IP information\n" - "Perform split horizon\n") - -DEFSH (VTYSH_BGPD, no_bgp_confederation_identifier_cmd_vtysh, - "no bgp confederation identifier", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "AS confederation parameters\n" - "AS number\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_inter_external_intra_cmd_vtysh, - "distance ospf inter-area <1-255> external <1-255> intra-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "External routes\n" - "Distance for external routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n") - -DEFSH (VTYSH_BGPD, no_set_ecommunity_soo_cmd_vtysh, - "no set extcommunity soo", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Site-of-Origin extended community\n") - -DEFSH (VTYSH_ZEBRA, no_ip_address_label_cmd_vtysh, - "no ip address A.B.C.D/M label LINE", - "Negate a command or set its defaults\n" - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP address (e.g. 10.0.0.1/8)\n" - "Label of this address\n" - "Label\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbors_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_OSPFD, no_ospf_transmit_delay_cmd_vtysh, - "no ospf transmit-delay", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Link state transmit delay\n") - -DEFSH (VTYSH_OSPFD|VTYSH_OSPF6D, ospf6_routemap_no_set_metric_type_cmd_vtysh, - "no set metric-type (type-1|type-2)", - "Negate a command or set its defaults\n" - "Set value\n" - "Type of metric\n" - "OSPF6 external type 1 metric\n" - "OSPF6 external type 2 metric\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_regexp_cmd_vtysh, - "show ipv6 bgp regexp .LINE", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_out_cmd_vtysh, - "clear ip bgp * out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_filter_list_cmd_vtysh, - "show ipv6 bgp filter-list WORD", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv4_cmd_vtysh, - "redistribute (connected|kernel|ospf|rip|static)", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n") - -DEFSH (VTYSH_OSPFD, no_ospf_message_digest_key_cmd_vtysh, - "no ospf message-digest-key <1-255>", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n") - -DEFSH (VTYSH_OSPFD, ospf_message_digest_key_cmd_vtysh, - "ospf message-digest-key <1-255> md5 KEY", - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n" - "Use MD5 algorithm\n" - "The OSPF password (key)") - -DEFSH (VTYSH_OSPFD, neighbor_poll_interval_cmd_vtysh, - "neighbor A.B.C.D poll-interval <1-65535>", - "Specify neighbor router\n" - "Neighbor IP address\n" - "Dead Neighbor Polling interval\n" - "Seconds\n") - -DEFSH (VTYSH_BGPD, neighbor_peer_group_cmd_vtysh, - "neighbor WORD peer-group", - "Specify neighbor router\n" - "Neighbor tag\n" - "Configure peer-group\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out the existing ORF prefix-list\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_cmd_vtysh, - "clear bgp external", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_cmd_vtysh, - "ip ospf authentication", - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n") - -DEFSH (VTYSH_BGPD, no_bgp_router_id_cmd_vtysh, - "no bgp router-id", - "Negate a command or set its defaults\n" - "BGP information\n" - "Override configured router identifier\n") - -DEFSH (VTYSH_OSPFD, no_ospf_abr_type_cmd_vtysh, - "no ospf abr-type (cisco|ibm|shortcut)", - "Negate a command or set its defaults\n" - "OSPF specific commands\n" - "Set OSPF ABR type\n" - "Alternative ABR, cisco implementation\n" - "Alternative ABR, IBM implementation\n" - "Shortcut ABR\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_self_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" ") (self-originate|)", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "Self-originated link states\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" "|max-age|self-originate)", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "LSAs in MaxAge list\n" - "Self-originated link states\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_ge_le_cmd_vtysh, - "no ipv6 prefix-list WORD (deny|permit) X:X::X:X/M ge <0-128> le <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_soft_in_cmd_vtysh, - "clear ip bgp external soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_transmitdelay_cmd_vtysh, - "ipv6 ospf6 transmit-delay TRANSMITDELAY", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Link state transmit delay\n" - "<1-65535> Seconds\n" - ) - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_cmd_vtysh, - "clear bgp ipv6 <1-65535>", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authkey_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication-key|) AUTH_KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Authentication password (key)\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_soft_out_cmd_vtysh, - "clear bgp peer-group WORD soft out", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_neighbors_peer_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_BGPD, no_neighbor_ebgp_multihop_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "ebgp-multihop", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Allow EBGP neighbors not on directly connected networks\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community_exact_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_ipv4_soft_out_cmd_vtysh, - "clear ip bgp view WORD * ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community4_exact_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_bgp_cmd_vtysh, - "no redistribute bgp", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_retransmitinterval_cmd_vtysh, - "ipv6 ospf6 retransmit-interval RXMTINTERVAL", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Time between retransmitting lost link state advertisements\n" - "<1-65535> Seconds\n" - ) - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_soft_cmd_vtysh, - "clear ip bgp <1-65535> soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_soft_cmd_vtysh, - "clear ip bgp external soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_all_cmd_vtysh, - "no ipv6 access-list WORD", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n") - -DEFSH (VTYSH_RIPD, show_debugging_rip_cmd_vtysh, - "show debugging rip", - "Show running system information\n" - "Debugging functions (see also 'undebug')\n" - "RIP information\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, rmap_onmatch_next_cmd_vtysh, - "on-match next", - "Exit policy on matches\n" - "Next clause\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_soft_out_cmd_vtysh, - "clear ip bgp <1-65535> soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_receive_version_num_cmd_vtysh, - "no ip rip receive version (1|2)", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Advertisement reception\n" - "Version control\n" - "Version 1\n" - "Version 2\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_view_cmd_vtysh, - "show ip bgp view WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "BGP view name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_neighbors_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_cost_addr_cmd_vtysh, - "ip ospf cost <1-65535> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Interface cost\n" - "Cost\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_routes_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community4_exact_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_prefix_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_standard_any_cmd_vtysh, - "access-list (<1-99>|<1300-1999>) (deny|permit) any", - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any source host\n") - -DEFSH (VTYSH_BGPD, neighbor_override_capability_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "override-capability", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Override capability negotiation result\n") - -DEFSH (VTYSH_BGPD, no_set_ipv6_nexthop_global_val_cmd_vtysh, - "no set ipv6 next-hop global X:X::X:X", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 global address\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_intra_cmd_vtysh, - "distance ospf intra-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Intra-area routes\n" - "Distance for intra-area routes\n") - -DEFSH (VTYSH_BGPD, no_ip_as_path_cmd_vtysh, - "no ip as-path access-list WORD (deny|permit) .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "BGP autonomous system path filter\n" - "Specify an access list name\n" - "Regular expression access list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_prefix_list_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) prefix-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes conforming to the prefix-list\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_BGPD, neighbor_default_originate_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "default-originate", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Originate default route to this neighbor\n") - -DEFSH (VTYSH_RIPD, no_rip_redistribute_type_cmd_vtysh, - "no redistribute (kernel|connected|static|ospf|bgp)", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_connected_metric_val_cmd_vtysh, - "no redistribute connected metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_ZEBRA, no_ip_route_mask_distance_cmd_vtysh, - "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) <1-255>", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IP destination prefix\n" - "IP destination prefix mask\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n" - "Distance value for this route\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community2_exact_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_kernel_cmd_vtysh, - "redistribute kernel", - "Redistribute information from another routing protocol\n" - "Kernel routes\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_lsa_sub_cmd_vtysh, - "no debug ospf lsa (generate|flooding|install|refresh)", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Link State Advertisement\n" - "LSA Generation\n" - "LSA Flooding\n" - "LSA Install/Delete\n" - "LSA Refres\n") - -DEFSH (VTYSH_BGPD, bgp_fast_external_failover_cmd_vtysh, - "bgp fast-external-failover", - "BGP information\n" - "Immediately reset session if a link to a directly connected external peer goes down\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_message_digest_key_cmd_vtysh, - "ip ospf message-digest-key <1-255> md5 KEY", - "IP Information\n" - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n" - "Use MD5 algorithm\n" - "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_prefix_list_cmd_vtysh, - "show ipv6 mbgp prefix-list WORD", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the prefix-list\n" - "IPv6 prefix-list name\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_out_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_bgp_community_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPD, no_rip_route_cmd_vtysh, - "no route A.B.C.D/M", - "Negate a command or set its defaults\n" - "RIP static route configuration\n" - "IP prefix <network>/<length>\n") - -DEFSH (VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD, no_set_metric_val_cmd_vtysh, - "no set metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "Metric value for destination routing protocol\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_out_cmd_vtysh, - "clear bgp (A.B.C.D|X:X::X:X) out", - "Reset functions\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_le_ge_cmd_vtysh, - "no ipv6 prefix-list WORD (deny|permit) X:X::X:X/M le <0-128> ge <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, neighbor_activate_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "activate", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Enable the Address Family for this Neighbor\n") - -DEFSH (VTYSH_OSPFD, ospf_compatible_rfc1583_cmd_vtysh, - "compatible rfc1583", - "OSPF compatibility list\n" - "compatible with RFC 1583\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_route_map_cmd_vtysh, - "no network A.B.C.D mask A.B.C.D route-map WORD", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n" - "Network mask\n" - "Network mask\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_BGPD, neighbor_description_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "description .LINE", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Neighbor specific description\n" - "Up to 80 characters describing this neighbor\n") - -DEFSH (VTYSH_RIPD, ip_rip_send_version_2_cmd_vtysh, - "ip rip send version 2 1", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement transmission\n" - "Version control\n" - "RIP version 2\n" - "RIP version 1\n") - -DEFSH (VTYSH_BGPD, no_neighbor_enforce_multihop_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "enforce-multihop", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Enforce EBGP neighbors perform multihop\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_route_map_cmd_vtysh, - "show bgp ipv6 route-map WORD", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the route-map\n" - "A route-map to match on\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, clear_ip_prefix_list_cmd_vtysh, - "clear ip prefix-list", - "Reset functions\n" - "IP information\n" - "Build a prefix list\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_key_addr_cmd_vtysh, - "ip ospf authentication-key AUTH_KEY A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Authentication password (key)\n" - "The OSPF password (key)\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, ip_ospf_dead_interval_cmd_vtysh, - "ip ospf dead-interval <1-65535>", - "IP Information\n" - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n" - "Seconds\n") - -DEFSH (VTYSH_BGPD, no_neighbor_port_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "port", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Neighbor's BGP port\n") - -DEFSH (VTYSH_BGPD, no_neighbor_route_reflector_client_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "route-reflector-client", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Configure a neighbor as Route Reflector client\n") - -DEFSH (VTYSH_BGPD, no_set_community_delete_cmd_vtysh, - "no set comm-list", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "set BGP community list (for deletion)\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community4_exact_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, no_bgp_fast_external_failover_cmd_vtysh, - "no bgp fast-external-failover", - "Negate a command or set its defaults\n" - "BGP information\n" - "Immediately reset session if a link to a directly connected external peer goes down\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_mode_cmd_vtysh, - "no ip rip authentication mode", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication mode\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|)", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n") - -DEFSH (VTYSH_OSPFD, area_vlink_param3_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, show_bgp_prefix_cmd_vtysh, - "show bgp X:X::X:X/M", - "Show running system information\n" - "BGP information\n" - "IPv6 prefix <network>/<length>\n") - -DEFSH (VTYSH_BGPD, neighbor_route_server_client_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "route-server-client", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Configure a neighbor as Route Server client\n") - -DEFSH (VTYSH_BGPD, show_bgp_community3_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_soft_in_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community_exact_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_advertised_route_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_cmd_vtysh, - "show ipv6 ospf6", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, show_ipv6_prefix_list_cmd_vtysh, - "show ipv6 prefix-list", - "Show running system information\n" - "IPv6 information\n" - "Build a prefix list\n") - -DEFSH (VTYSH_ZEBRA, no_debug_zebra_kernel_cmd_vtysh, - "no debug zebra kernel", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra between kernel interface\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_in_prefix_filter_cmd_vtysh, - "clear bgp <1-65535> in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbors_cmd_vtysh, - "show bgp ipv6 neighbors", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_external_intra_cmd_vtysh, - "distance ospf external <1-255> intra-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "External routes\n" - "Distance for external routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n") - -DEFSH (VTYSH_BGPD, no_set_vpnv4_nexthop_cmd_vtysh, - "no set vpnv4 next-hop", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "VPNv4 information\n" - "VPNv4 next-hop address\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_lsa_cmd_vtysh, - "no debug ospf lsa", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Link State Advertisement\n") - -DEFSH (VTYSH_BGPD, no_match_community_exact_cmd_vtysh, - "no match community (<1-99>|<100-199>|WORD) exact-match", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP community list\n" - "Community-list number (standard)\n" - "Community-list number (expanded)\n" - "Community-list name\n" - "Do exact matching of communities\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_kernel_metric_routemap_cmd_vtysh, - "no redistribute kernel metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_topology_router_cmd_vtysh, - "show ipv6 ospf6 topology (A.B.C.D|<0-4294967295>|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Inter Area topology information\n" - "Specify Router-ID\n" - "Specify Router-ID\n" - "Detailed information\n" - ) - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbor_routes_cmd_vtysh, - "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, ip_community_list_standard2_cmd_vtysh, - "ip community-list <1-99> (deny|permit)", - "IP information\n" - "Add a community list entry\n" - "Community list number (standard)\n" - "Specify community to reject\n" - "Specify community to accept\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_instance_ipv4_summary_cmd_vtysh, - "show ip bgp view WORD ipv4 (unicast|multicast) summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_mask_natural_route_map_cmd_vtysh, - "no network A.B.C.D route-map WORD", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "Network number\n" - "Route-map to modify the attributes\n" - "Name of the route map\n") - -DEFSH (VTYSH_OSPFD, no_area_range_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv4_metric_cmd_vtysh, - "no redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community2_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_dead_interval_addr_cmd_vtysh, - "no ip ospf dead-interval A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community2_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community_exact_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_hello_interval_cmd_vtysh, - "no ip ospf hello-interval", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Time between HELLO packets\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community4_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_remark_cmd_vtysh, - "no ipv6 access-list WORD remark", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Access list entry comment\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_soft_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_match_origin_cmd_vtysh, - "no match origin", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "BGP origin code\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_soft_out_cmd_vtysh, - "clear ip bgp * soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_bgp_neighbor_routes_cmd_vtysh, - "show bgp neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, aggregate_address_cmd_vtysh, - "aggregate-address A.B.C.D/M", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_bgp_metric_routemap_cmd_vtysh, - "redistribute bgp metric <0-16> route-map WORD", - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_topology_router_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D topology (A.B.C.D|<0-4294967295>|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Shortest Path First tree information\n" - "Displays SPF topology table\n" - "Specify Router-ID\n" - "Specify Router-ID\n" - ) - -DEFSH (VTYSH_BGPD, old_ipv6_aggregate_address_summary_only_cmd_vtysh, - "ipv6 bgp aggregate-address X:X::X:X/M summary-only", - "IPv6 information\n" - "BGP information\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_mask_any_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D any", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "Any destination host\n") - -DEFSH (VTYSH_OSPFD, passive_interface_cmd_vtysh, - "passive-interface IFNAME", - "Suppress routing updates on an interface\n" - "Interface's name\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_cmd_vtysh, - "no network A.B.C.D/M", - "Negate a command or set its defaults\n" - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_OSPFD, no_timers_spf_cmd_vtysh, - "no timers spf", - "Negate a command or set its defaults\n" - "Adjust routing timers\n" - "OSPF SPF timers\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_network_cmd_vtysh, - "no network IF_OR_ADDR", - "Negate a command or set its defaults\n" - "RIPng enable on specified interface or network.\n" - "Interface or address") - -DEFSH (VTYSH_BGPD, bgp_multiple_instance_cmd_vtysh, - "bgp multiple-instance", - "BGP information\n" - "Enable bgp multiple instance\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_out_cmd_vtysh, - "clear ip bgp external out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD, no_rip_neighbor_cmd_vtysh, - "no neighbor A.B.C.D", - "Negate a command or set its defaults\n" - "Specify a neighbor router\n" - "Neighbor address\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_cmd_vtysh, - "show ip bgp vpnv4 all", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n") - -DEFSH (VTYSH_BGPD, clear_bgp_instance_all_soft_out_cmd_vtysh, - "clear bgp view WORD * soft out", - "Reset functions\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_ZEBRA, debug_zebra_events_cmd_vtysh, - "debug zebra events", - "Debugging functions (see also 'undebug')\n" - "Zebra configuration\n" - "Debug option set for zebra events\n") - -DEFSH (VTYSH_ZEBRA, ip_route_mask_distance_cmd_vtysh, - "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) <1-255>", - "IP information\n" - "Establish static routes\n" - "IP destination prefix\n" - "IP destination prefix mask\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n" - "Distance value for this route\n") - -DEFSH (VTYSH_ZEBRA, show_ipv6_route_protocol_cmd_vtysh, - "show ipv6 route (bgp|connected|kernel|ospf6|ripng|static)", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "Border Gateway Protocol (BGP)\n" - "Connected\n" - "Kernel\n" - "Open Shortest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n") - -DEFSH (VTYSH_BGPD, bgp_client_to_client_reflection_cmd_vtysh, - "bgp client-to-client reflection", - "BGP specific commands\n" - "Configure client to client route reflection\n" - "reflection of routes allowed\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_exact_cmd_vtysh, - "access-list WORD (deny|permit) A.B.C.D/M exact-match", - "Add an access list entry\n" - "IP zebra access-list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 10.0.0.0/8\n" - "Exact match of the prefixes\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_cmd_vtysh, - "no ipv6 access-list WORD (deny|permit) X:X::X:X/M", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 3ffe:506::/32\n") - -DEFSH (VTYSH_BGPD, set_atomic_aggregate_cmd_vtysh, - "set atomic-aggregate", - "Set values in destination routing protocol\n" - "BGP atomic aggregate attribute\n" ) - -DEFSH (VTYSH_BGPD, no_neighbor_soft_reconfiguration_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "soft-reconfiguration inbound", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Per neighbor soft reconfiguration\n" - "Allow inbound soft reconfiguration for this neighbor\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, show_ipv6_access_list_cmd_vtysh, - "show ipv6 access-list", - "Show running system information\n" - "IPv6 information\n" - "List IPv6 access lists\n") - -DEFSH (VTYSH_BGPD, no_bgp_distance_cmd_vtysh, - "no distance bgp <1-255> <1-255> <1-255>", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "BGP distance\n" - "Distance for routes external to the AS\n" - "Distance for routes internal to the AS\n" - "Distance for local routes\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_route_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D route", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Routing Table\n" - ) - -DEFSH (VTYSH_BGPD, no_bgp_bestpath_compare_router_id_cmd_vtysh, - "no bgp bestpath compare-routerid", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Change the default bestpath selection\n" - "Compare router-id for identical EBGP paths\n") - -DEFSH (VTYSH_BGPD, match_community_cmd_vtysh, - "match community (<1-99>|<100-199>|WORD)", - "Match values from routing table\n" - "Match BGP community list\n" - "Community-list number (standard)\n" - "Community-list number (expanded)\n" - "Community-list name\n") - -DEFSH (VTYSH_ZEBRA, no_bandwidth_if_cmd_vtysh, - "no bandwidth", - "Negate a command or set its defaults\n" - "Set bandwidth informational parameter\n") - -DEFSH (VTYSH_BGPD, no_set_originator_id_cmd_vtysh, - "no set originator-id", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP originator ID attribute\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_prefix_cmd_vtysh, - "show ip bgp vpnv4 all A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_OSPFD, no_ospf_distribute_list_out_cmd_vtysh, - "no distribute-list WORD out (kernel|connected|static|rip|bgp)", - "Negate a command or set its defaults\n" - "Filter networks in routing updates\n" - "Access-list name\n" - "Filter outgoing routing updates\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_host_host_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D host A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_retransmit_interval_cmd_vtysh, - "no ip ospf retransmit-interval", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_cmd_vtysh, - "clear ip bgp (A.B.C.D|X:X::X:X)", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor IP address to clear\n" - "BGP IPv6 neighbor to clear\n") - -DEFSH (VTYSH_BGPD, no_bgp_distance2_cmd_vtysh, - "no distance bgp", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "BGP distance\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_month_day_day_month_cmd_vtysh, - "accept-lifetime HH:MM:SS MONTH <1-31> <1993-2035> HH:MM:SS <1-31> MONTH <1993-2035>", - "Set accept lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Time to expire\n" - "Day of th month to expire\n" - "Month of the year to expire\n" - "Year to expire\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_instance_all_in_prefix_filter_cmd_vtysh, - "clear ip bgp view WORD * in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_OSPFD, area_authentication_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) authentication", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Enable authentication\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_md5_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) " - "(message-digest-key|) <1-255> md5 KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" - "Message digest authentication password (key)\n" "dummy string \n" "Key ID\n" "Use MD5 algorithm\n" "The OSPF password (key)") - -DEFSH (VTYSH_OSPFD, debug_ospf_packet_all_cmd_vtysh, - "debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all)", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community_all_cmd_vtysh, - "show ipv6 mbgp community", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_connected_cmd_vtysh, - "no redistribute connected", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n") - -DEFSH (VTYSH_BGPD, aggregate_address_as_set_summary_cmd_vtysh, - "aggregate-address A.B.C.D/M as-set summary-only", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Generate AS set path information\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_supernets_cmd_vtysh, - "show ip route supernets-only", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "Show supernet entries only\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv6_cmd_vtysh, - "redistribute (connected|kernel|ospf6|ripng|static)", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_string2_cmd_vtysh, - "no ip rip authentication string LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication string\n" - "Authentication string\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_ge_le_cmd_vtysh, - "no ip prefix-list WORD (deny|permit) A.B.C.D/M ge <0-32> le <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_soft_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, no_router_bgp_view_cmd_vtysh, - "no router bgp <1-65535> view WORD", - "Negate a command or set its defaults\n" - "Enable a routing process\n" - "BGP information\n" - "AS number\n" - "BGP view\n" - "view name\n") - -DEFSH (VTYSH_BGPD, old_ipv6_bgp_network_cmd_vtysh, - "ipv6 bgp network X:X::X:X/M", - "IPv6 information\n" - "BGP information\n" - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_type_metric_routemap_cmd_vtysh, - "default-information originate metric-type (1|2) metric <0-16777214> route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "OSPF default metric\n" - "OSPF metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_prefix_cmd_vtysh, - "show ipv6 mbgp X:X::X:X/M", - "Show running system information\n" - "IP information\n" - "MBGP information\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_name_expanded_cmd_vtysh, - "no ip community-list expanded WORD (deny|permit) .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Specify an expanded community-list\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_OSPFD, no_area_shortcut_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) shortcut (enable|disable)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Deconfigure the area's shortcutting mode\n" - "Deconfigure enabled shortcutting through the area\n" - "Deconfigure disabled shortcutting through the area\n") - -DEFSH (VTYSH_OSPFD, ospf_dead_interval_cmd_vtysh, - "ospf dead-interval <1-65535>", - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n" - "Seconds\n") - -DEFSH (VTYSH_ZEBRA, multicast_cmd_vtysh, - "multicast", - "Set multicast flag to interface\n") - -DEFSH (VTYSH_OSPF6D, no_ipv6_ospf6_advertise_prefix_list_cmd_vtysh, - "no ipv6 ospf6 advertise prefix-list", - "Negate a command or set its defaults\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Advertising options\n" - "Filter prefix using prefix-list\n" - ) - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_soft_in_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_sequence_number_cmd_vtysh, - "ipv6 prefix-list sequence-number", - "IPv6 information\n" - "Build a prefix list\n" - "Include/exclude sequence numbers in NVGEN\n") - -DEFSH (VTYSH_BGPD, bgp_default_ipv4_unicast_cmd_vtysh, - "bgp default ipv4-unicast", - "BGP specific commands\n" - "Configure BGP defaults\n" - "Activate ipv4-unicast for a peer by default\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_seq_ge_le_cmd_vtysh, - "no ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M ge <0-128> le <0-128>", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community3_exact_cmd_vtysh, - "show bgp ipv6 community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_rd_prefix_cmd_vtysh, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn A.B.C.D/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_vpnv4_soft_out_cmd_vtysh, - "clear ip bgp A.B.C.D vpnv4 unicast soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged6_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path med next-hop", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Med attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_next_hop_cmd_vtysh, - "no match ip next-hop", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_in_cmd_vtysh, - "clear ip bgp external in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_cmd_vtysh, - "show ip prefix-list", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_cmd_vtysh, - "default-information originate", - "Control distribution of default information\n" - "Distribute a default route\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, ipv6_access_list_exact_cmd_vtysh, - "ipv6 access-list WORD (deny|permit) X:X::X:X/M exact-match", - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 3ffe:506::/32\n" - "Exact match of the prefixes\n") - -DEFSH (VTYSH_BGPD, no_dump_bgp_updates_cmd_vtysh, - "no dump bgp updates [PATH] [INTERVAL]", - "Negate a command or set its defaults\n" - "Dump packet\n" - "BGP packet dump\n" - "Dump BGP updates only\n") - -DEFSH (VTYSH_BGPD, no_neighbor_local_as_val2_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as <1-65535> no-prepend", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a local-as number\n" - "AS number used as local AS\n" - "Do not prepend local-as to updates from ebgp peers\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_match_ip_next_hop_prefix_list_cmd_vtysh, - "no match ip next-hop prefix-list", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match next-hop address of route\n" - "Match entries of prefix-lists\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbor_advertised_route_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_any_mask_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip any A.B.C.D A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_set_local_pref_val_cmd_vtysh, - "no set local-preference <0-4294967295>", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP local preference path attribute\n" - "Preference value\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_standard_cmd_vtysh, - "access-list (<1-99>|<1300-1999>) (deny|permit) A.B.C.D A.B.C.D", - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Address to match\n" - "Wildcard bits\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv6_rmap_metric_cmd_vtysh, - "no redistribute (connected|kernel|ospf6|ripng|static) route-map WORD metric <0-4294967295>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_route_ifname_pref_cmd_vtysh, - "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE <1-255>", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n" - "Distance value for this prefix\n") - -DEFSH (VTYSH_RIPNGD, ripng_network_cmd_vtysh, - "network IF_OR_ADDR", - "RIPng enable on specified interface or network.\n" - "Interface or address") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_mask_host_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D host A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged1_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged (as-path|next-hop|med)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, show_ip_access_list_name_cmd_vtysh, - "show ip access-list (<1-99>|<100-199>|<1300-1999>|<2000-2699>|WORD)", - "Show running system information\n" - "IP information\n" - "List IP access lists\n" - "IP standard access list\n" - "IP extended access list\n" - "IP standard access list (expanded range)\n" - "IP extended access list (expanded range)\n" - "IP zebra access-list\n") - -DEFSH (VTYSH_BGPD, vpnv4_network_cmd_vtysh, - "network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD", - "Specify a network to announce via BGP\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Specify Route Distinguisher\n" - "VPN Route Distinguisher\n" - "BGP tag\n" - "tag value\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_ge_le_cmd_vtysh, - "ipv6 prefix-list WORD (deny|permit) X:X::X:X/M ge <0-128> le <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_receive_version_cmd_vtysh, - "no ip rip receive version", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Advertisement reception\n" - "Version control\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_host_host_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip host A.B.C.D host A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "A single source host\n" - "Source address\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_soft_cmd_vtysh, - "clear bgp ipv6 peer-group WORD soft", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, dump_bgp_all_interval_cmd_vtysh, - "dump bgp all PATH INTERVAL", - "Dump packet\n" - "BGP packet dump\n" - "Dump all BGP packets\n" - "Output filename\n" - "Interval of output\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_in_cmd_vtysh, - "clear bgp peer-group WORD in", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_args_addr_cmd_vtysh, - "ip ospf authentication (null|message-digest) A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n" - "Use null authentication\n" - "Use message-digest authentication\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_type_metric_routemap_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> route-map WORD", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n" - "OSPF exterior metric type for redistributed routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Metric for redistributed routes\n" - "OSPF default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, bgp_enforce_first_as_cmd_vtysh, - "bgp enforce-first-as", - "BGP information\n" - "Enforce the first AS for EBGP routes\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_route_map_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) route-map WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the route-map\n" - "A route-map to match on\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_remark_arg_cmd_vtysh, - "no ipv6 access-list WORD remark .LINE", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Access list entry comment\n" - "Comment up to 100 characters\n") - -DEFSH (VTYSH_BGPD, show_bgp_community_list_exact_cmd_vtysh, - "show bgp community-list WORD exact-match", - "Show running system information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_BGPD, no_neighbor_peer_group_cmd_vtysh, - "no neighbor WORD peer-group", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor tag\n" - "Configure peer-group\n") - -DEFSH (VTYSH_RIPD, rip_timers_cmd_vtysh, - "timers basic <5-2147483647> <5-2147483647> <5-2147483647>", - "Adjust routing timers\n" - "Basic routing protocol update timers\n" - "Routing table update timer value in second. Default is 30.\n" - "Routing information timeout timer. Default is 180.\n" - "Garbage collection timer. Default is 120.\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_metric_routemap_cmd_vtysh, - "default-information originate always metric <0-16777214> route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, no_bgp_timers_arg_cmd_vtysh, - "no timers bgp <0-65535> <0-65535>", - "Negate a command or set its defaults\n" - "Adjust routing timers\n" - "BGP timers\n" - "Keepalive interval\n" - "Holdtime\n") - -DEFSH (VTYSH_BGPD, no_bgp_network_import_check_cmd_vtysh, - "no bgp network import-check", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "BGP network command\n" - "Check BGP network route exists in IGP\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_soft_in_cmd_vtysh, - "clear bgp ipv6 <1-65535> soft in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_rmap_onmatch_goto_cmd_vtysh, - "no on-match goto", - "Negate a command or set its defaults\n" - "Exit policy on matches\n" - "Next clause\n") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_database_type_id_cmd_vtysh, - "show ip ospf database (" "asbr-summary|external|network|router|summary" "" "" ") A.B.C.D", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Database summary\n" - "ASBR summary link states\n" "External link states\n" "Network link states\n" "Router link states\n" "Network summary link states\n" "" "" "" "" - "Link State ID (as an IP address)\n") - -DEFSH (VTYSH_OSPFD, passive_interface_addr_cmd_vtysh, - "passive-interface IFNAME A.B.C.D", - "Suppress routing updates on an interface\n" - "Interface's name\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_spf_tree_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D spf tree", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Shortest Path First caculation\n" - "Displays spf tree\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_param3_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_prefix_cmd_vtysh, - "show ipv6 bgp X:X::X:X/M", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv6_rmap_cmd_vtysh, - "no redistribute (connected|kernel|ospf6|ripng|static) route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community4_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_RIPD, debug_rip_packet_detail_cmd_vtysh, - "debug rip packet (recv|send) detail", - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP packet\n" - "RIP receive packet\n" - "RIP send packet\n" - "Detailed information display\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_aggregate_address_cmd_vtysh, - "no aggregate-address X:X::X:X/M", - "Negate a command or set its defaults\n" - "Delete aggregate RIPng route announcement\n" - "Aggregate network") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_priority_cmd_vtysh, - "ipv6 ospf6 priority PRIORITY", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Router priority\n" - "<0-255> Priority\n" - ) - -DEFSH (VTYSH_OSPFD, area_vlink_param1_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_seq_le_ge_cmd_vtysh, - "no ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M le <0-32> ge <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_send_version_cmd_vtysh, - "no ip rip send version", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Advertisement transmission\n" - "Version control\n") - -DEFSH (VTYSH_BGPD, ip_as_path_cmd_vtysh, - "ip as-path access-list WORD (deny|permit) .LINE", - "IP information\n" - "BGP autonomous system path filter\n" - "Specify an access list name\n" - "Regular expression access list name\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_BGPD, no_bgp_bestpath_med_cmd_vtysh, - "no bgp bestpath med (confed|missing-as-worst)", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Compare MED among confederation paths\n" - "Treat missing MED as the least preferred one\n") - -DEFSH (VTYSH_BGPD, neighbor_timers_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "timers <0-65535> <0-65535>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP per neighbor timers\n" - "Keepalive interval\n" - "Holdtime\n") - -DEFSH (VTYSH_ZEBRA, show_ipv6_forwarding_cmd_vtysh, - "show ipv6 forwarding", - "Show running system information\n" - "IPv6 information\n" - "Forwarding status\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_summary_name_cmd_vtysh, - "show ip prefix-list summary WORD", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Summary of prefix lists\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_BGPD, debug_bgp_normal_cmd_vtysh, - "debug bgp", - "Debugging functions (see also 'undebug')\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_in_prefix_filter_cmd_vtysh, - "clear bgp ipv6 * in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_authkey_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication-key|)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Authentication password (key)\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_out_cmd_vtysh, - "clear bgp ipv6 external WORD out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPNGD, no_debug_ripng_packet_cmd_vtysh, - "no debug ripng packet", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng packet\n") - -DEFSH (VTYSH_ZEBRA, no_multicast_cmd_vtysh, - "no multicast", - "Negate a command or set its defaults\n" - "Unset multicast flag to interface\n") - -DEFSH (VTYSH_RIPD, ip_rip_send_version_cmd_vtysh, - "ip rip send version (1|2)", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement transmission\n" - "Version control\n" - "RIP version 1\n" - "RIP version 2\n") - -DEFSH (VTYSH_RIPD, no_rip_distance_source_cmd_vtysh, - "no distance <1-255> A.B.C.D/M", - "Negate a command or set its defaults\n" - "Administrative distance\n" - "Distance value\n" - "IP source prefix\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_retransmit_interval_addr_cmd_vtysh, - "no ip ospf retransmit-interval A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, no_neighbor_weight_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "weight <0-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Set default weight for routes from this neighbor\n" - "default weight\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_paths_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) paths", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Path information\n") - -DEFSH (VTYSH_BGPD, no_bgp_distance_source_cmd_vtysh, - "no distance <1-255> A.B.C.D/M", - "Negate a command or set its defaults\n" - "Define an administrative distance\n" - "Administrative distance\n" - "IP source prefix\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community2_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, neighbor_set_peer_group_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "peer-group WORD", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Member of the peer-group\n" - "peer-group name\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_metric_type_cmd_vtysh, - "default-information originate metric <0-16777214> metric-type (1|2)", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_cost_cmd_vtysh, - "ipv6 ospf6 cost COST", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Interface cost\n" - "<1-65535> Cost\n" - ) - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_type_metric_cmd_vtysh, - "default-information originate metric-type (1|2) metric <0-16777214>", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "OSPF default metric\n" - "OSPF metric\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_out_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_route_prefix_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D route (X::X|detail)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Routing Table\n" - "Specify IPv6 address\n" - "Detailed information\n" - ) - -DEFSH (VTYSH_OSPFD, no_area_stub_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) stub", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Configure OSPF area as stub\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_regexp_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) regexp .LINE", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_BGPD, match_ecommunity_cmd_vtysh, - "match extcommunity (<1-99>|<100-199>|WORD)", - "Match values from routing table\n" - "Match BGP/VPN extended community list\n" - "Extended community-list number (standard)\n" - "Extended community-list number (expanded)\n" - "Extended community-list name\n") - -DEFSH (VTYSH_BGPD, no_ip_community_list_name_standard_cmd_vtysh, - "no ip community-list standard WORD (deny|permit) .AA:NN", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a community list entry\n" - "Specify a standard community-list\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_ZEBRA, no_ipv6_route_ifname_cmd_vtysh, - "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IPv6 destination prefix (e.g. 3ffe:506::/32)\n" - "IPv6 gateway address\n" - "IPv6 gateway interface name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_instance_summary_cmd_vtysh, - "show ip bgp view WORD summary", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_OSPFD, ospf_authentication_key_cmd_vtysh, - "ospf authentication-key AUTH_KEY", - "OSPF interface commands\n" - "Authentication password (key)\n" - "The OSPF password (key)") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_packet_all_cmd_vtysh, - "no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all)", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_soft_out_cmd_vtysh, - "clear bgp <1-65535> soft out", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_route_map_cmd_vtysh, - "no route-map WORD (deny|permit) <1-65535>", - "Negate a command or set its defaults\n" - "Create route-map or enter route-map command mode\n" - "Route map tag\n" - "Route map denies set operations\n" - "Route map permits set operations\n" - "Sequence to insert to/delete from existing route-map entry\n") - -DEFSH (VTYSH_BGPD, neighbor_send_community_type_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community (both|extended|standard)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Send Community attribute to this neighbor\n" - "Send Standard and Extended Community attributes\n" - "Send Extended Community attributes\n" - "Send Standard Community attributes\n") - -DEFSH (VTYSH_ZEBRA, no_ip_address_cmd_vtysh, - "no ip address A.B.C.D/M", - "Negate a command or set its defaults\n" - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP Address (e.g. 10.0.0.1/8)") - -DEFSH (VTYSH_BGPD, neighbor_interface_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "interface WORD", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Interface\n" - "Interface name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_flap_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) flap-statistics", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display flap statistics of the routes learned from neighbor\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_network_cmd_vtysh, - "ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)", - "IP Information\n" - "OSPF interface commands\n" - "Network type\n" - "Specify OSPF broadcast multi-access network\n" - "Specify OSPF NBMA network\n" - "Specify OSPF point-to-multipoint network\n" - "Specify OSPF point-to-point network\n") - -DEFSH (VTYSH_BGPD, no_neighbor_send_community_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Send Community attribute to this neighbor\n") - -DEFSH (VTYSH_BGPD, no_neighbor_strict_capability_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X) " "strict-capability-match", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "Strict capability negotiation match\n") - -DEFSH (VTYSH_BGPD, no_neighbor_update_source_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "update-source", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Source of routing updates\n" - "Interface name\n") - -DEFSH (VTYSH_OSPFD, no_area_filter_list_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Filter networks between OSPF areas\n" - "Filter prefixes between OSPF areas\n" - "Name of an IP prefix-list\n" - "Filter networks sent to this area\n" - "Filter networks sent from this area\n") - -DEFSH (VTYSH_ZEBRA, show_debugging_zebra_cmd_vtysh, - "show debugging zebra", - "Show running system information\n" - "Zebra configuration\n" - "Debugging information\n") - -DEFSH (VTYSH_BGPD, ip_community_list_name_standard_cmd_vtysh, - "ip community-list standard WORD (deny|permit) .AA:NN", - "IP information\n" - "Add a community list entry\n" - "Add a standard community-list entry\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_out_cmd_vtysh, - "clear bgp <1-65535> out", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPF6D, show_zebra_cmd_vtysh, - "show zebra", - "Show running system information\n" - "Zebra information\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_as_set_summary_cmd_vtysh, - "no aggregate-address A.B.C.D/M as-set summary-only", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Generate AS set path information\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_summary_cmd_vtysh, - "show ipv6 mbgp summary", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Summary of BGP neighbor status\n") - -DEFSH (VTYSH_OSPF6D, no_ospf6_redistribute_cmd_vtysh, - "no redistribute (static|kernel|connected|ripng|bgp)", - "Negate a command or set its defaults\n" - "Redistribute\n" - "Static route\n" - "Kernel route\n" - "Connected route\n" - "RIPng route\n" - "BGP route\n" - ) - -DEFSH (VTYSH_ZEBRA, no_ipv6_nd_managed_config_flag_cmd_vtysh, - "no ipv6 nd managed-config-flag", - "Negate a command or set its defaults\n" - "IP information\n" - "Neighbor discovery\n" - "Managed address configuration flag\n") - -DEFSH (VTYSH_RIPD, show_ip_protocols_rip_cmd_vtysh, - "show ip protocols", - "Show running system information\n" - "IP information\n" - "IP routing protocol process parameters and statistics\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_community_list_exact_cmd_vtysh, - "show bgp ipv6 community-list WORD exact-match", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_suppress_ra_cmd_vtysh, - "ipv6 nd suppress-ra", - "IP information\n" - "Neighbor discovery\n" - "Suppress Router Advertisement\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_ospf6_cmd_vtysh, - "redistribute ospf6", - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_in_cmd_vtysh, - "clear bgp ipv6 external WORD in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, area_vlink_authtype_args_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) (message-digest|null)", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" "Use null authentication\n" "Use message-digest authentication\n") - -DEFSH (VTYSH_OSPFD, no_area_range_substitute_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "Announce area range as another prefix\n" - "Network prefix to be announced instead of range\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_neighbor_routes_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X)", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community4_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, ip_community_list_cmd_vtysh, - "ip community-list WORD (deny|permit) .AA:NN", - "IP information\n" - "Add a community list entry\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n") - -DEFSH (VTYSH_OSPFD, no_router_id_cmd_vtysh, - "no router-id", - "Negate a command or set its defaults\n" - "router-id for the OSPF process\n") - -DEFSH (VTYSH_RIPD, no_match_ip_address_val_cmd_vtysh, - "no match ip address WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IP information\n" - "Match address of route\n" - "IP access-list name\n") - -DEFSH (VTYSH_BGPD, no_neighbor_attr_unchanged10_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged med as-path next-hop", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Med attribute\n" - "As-path attribute\n" - "Nexthop attribute\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_vpnv4_out_cmd_vtysh, - "clear ip bgp <1-65535> vpnv4 unicast out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_in_prefix_filter_cmd_vtysh, - "clear bgp ipv6 <1-65535> in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_soft_cmd_vtysh, - "clear bgp ipv6 external soft", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, no_ipv6_prefix_list_seq_cmd_vtysh, - "no ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) (X:X::X:X/M|any)", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Any prefix match. Same as \"::0/0 le 128\"\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_update_cmd_vtysh, - "no debug bgp updates", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP updates\n") - -DEFSH (VTYSH_OSPFD|VTYSH_OSPF6D, ospf6_routemap_set_metric_type_cmd_vtysh, - "set metric-type (type-1|type-2)", - "Set value\n" - "Type of metric\n" - "OSPF6 external type 1 metric\n" - "OSPF6 external type 2 metric\n") - -DEFSH (VTYSH_BGPD, no_bgp_confederation_identifier_arg_cmd_vtysh, - "no bgp confederation identifier <1-65535>", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "AS confederation parameters\n" - "AS number\n" - "Set routing domain confederation AS\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_cmd_vtysh, - "clear ip bgp <1-65535>", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_deadinterval_cmd_vtysh, - "ipv6 ospf6 dead-interval ROUTER_DEAD_INTERVAL", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Interval after which a neighbor is declared dead\n" - "<1-65535> Seconds\n" - ) - -DEFSH (VTYSH_OSPFD, area_vlink_param4_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_RIPD, send_lifetime_infinite_day_month_cmd_vtysh, - "send-lifetime HH:MM:SS <1-31> MONTH <1993-2035> infinite", - "Set send lifetime of the key\n" - "Time to start\n" - "Day of th month to start\n" - "Month of the year to start\n" - "Year to start\n" - "Never expires") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D A.B.C.D A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "Destination address\n" - "Destination Wildcard bits\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_retransmit_interval_addr_cmd_vtysh, - "ip ospf retransmit-interval <3-65535> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n" - "Seconds\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, show_ip_ospf_neighbor_detail_cmd_vtysh, - "show ip ospf neighbor detail", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n" - "detail of all neighbors\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_in_prefix_filter_cmd_vtysh, - "clear ip bgp <1-65535> in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, show_ip_prefix_list_name_seq_cmd_vtysh, - "show ip prefix-list WORD seq <1-4294967295>", - "Show running system information\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_description_arg_cmd_vtysh, - "no ip prefix-list WORD description .LINE", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n" - "Up to 80 characters describing this prefix-list\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv6_rmap_cmd_vtysh, - "redistribute (connected|kernel|ospf6|ripng|static) route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_RIPD, rip_redistribute_rip_cmd_vtysh, - "redistribute rip", - "Redistribute information from another routing protocol\n" - "Routing Information Protocol (RIP)\n") - -DEFSH (VTYSH_BGPD, show_ip_extcommunity_list_cmd_vtysh, - "show ip extcommunity-list", - "Show running system information\n" - "IP information\n" - "List extended-community list\n") - -DEFSH (VTYSH_OSPFD, no_ospf_cost_cmd_vtysh, - "no ospf cost", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Interface cost\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_filter_list_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) filter-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes conforming to the filter-list\n" - "Regular expression access list name\n") - -DEFSH (VTYSH_BGPD, ipv6_bgp_neighbor_advertised_route_cmd_vtysh, - "show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the routes advertised to a BGP neighbor\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_soft_in_cmd_vtysh, - "clear bgp ipv6 external soft in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, area_vlink_md5_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(message-digest-key|) <1-255> md5 KEY", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Message digest authentication password (key)\n" "dummy string \n" "Key ID\n" "Use MD5 algorithm\n" "The OSPF password (key)") - -DEFSH (VTYSH_BGPD, neighbor_passive_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "passive", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Don't send open messages to this neighbor\n") - -DEFSH (VTYSH_BGPD, neighbor_timers_connect_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X) " "timers connect <0-65535>", - "Specify neighbor router\n" - "Neighbor address\nIPv6 address\n" - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_key_chain_cmd_vtysh, - "no ip rip authentication key-chain", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication key-chain\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_event_cmd_vtysh, - "debug ospf event", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF event information\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_soft_out_cmd_vtysh, - "clear ip bgp peer-group WORD soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community_all_cmd_vtysh, - "show ipv6 bgp community", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_soft_out_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, old_ipv6_aggregate_address_cmd_vtysh, - "ipv6 bgp aggregate-address X:X::X:X/M", - "IPv6 information\n" - "BGP information\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_soft_cmd_vtysh, - "clear ip bgp peer-group WORD soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_hello_interval_addr_cmd_vtysh, - "no ip ospf hello-interval A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Time between HELLO packets\n" - "Address of interface") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, access_list_extended_any_host_cmd_vtysh, - "access-list (<100-199>|<2000-2699>) (deny|permit) ip any host A.B.C.D", - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_ipv4_soft_cmd_vtysh, - "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_description_cmd_vtysh, - "no ip prefix-list WORD description", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Prefix-list specific description\n") - -DEFSH (VTYSH_BGPD, old_no_ipv6_bgp_network_cmd_vtysh, - "no ipv6 bgp network X:X::X:X/M", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "BGP information\n" - "Specify a network to announce via BGP\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_kernel_metric_cmd_vtysh, - "no redistribute kernel metric", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Metric\n") - -DEFSH (VTYSH_OSPFD, no_network_area_cmd_vtysh, - "no network A.B.C.D/M area (A.B.C.D|<0-4294967295>)", - "Negate a command or set its defaults\n" - "Enable routing on an IP network\n" - "OSPF network prefix\n" - "Set the OSPF area ID\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n") - -DEFSH (VTYSH_OSPFD, area_range_advertise_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M advertise", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "OSPF area range for route advertise (default)\n" - "Area range prefix\n" - "Advertise this range (default)\n") - -DEFSH (VTYSH_OSPFD, area_range_substitute_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "Announce area range as another prefix\n" - "Network prefix to be announced instead of range\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_cmd_vtysh, - "clear bgp ipv6 external", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n") - -DEFSH (VTYSH_RIPD, no_rip_version_cmd_vtysh, - "no version", - "Negate a command or set its defaults\n" - "Set routing protocol version\n") - -DEFSH (VTYSH_BGPD, match_ipv6_next_hop_cmd_vtysh, - "match ipv6 next-hop X:X::X:X", - "Match values from routing table\n" - "IPv6 information\n" - "Match IPv6 next-hop address of route\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_BGPD, bgp_confederation_peers_cmd_vtysh, - "bgp confederation peers .<1-65535>", - "BGP specific commands\n" - "AS confederation parameters\n" - "Peer ASs in BGP confederation\n" - "AS number\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community3_exact_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, clear_ipv6_prefix_list_cmd_vtysh, - "clear ipv6 prefix-list", - "Reset functions\n" - "IPv6 information\n" - "Build a prefix list\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, clear_ip_prefix_list_name_prefix_cmd_vtysh, - "clear ip prefix-list WORD A.B.C.D/M", - "Reset functions\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbors_peer_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_packet_send_recv_detail_cmd_vtysh, - "no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) (detail|)", - "Negate a command or set its defaults\n" - "Debugging functions\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n" - "Packet sent\n" - "Packet received\n" - "Detail Information\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_authtype_md5_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(authentication|) " - "(message-digest-key|)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Enable authentication on this virtual link\n" "dummy string \n" - "Message digest authentication password (key)\n" "dummy string \n" "Key ID\n" "Use MD5 algorithm\n" "The OSPF password (key)") - -DEFSH (VTYSH_OSPFD, debug_ospf_ism_sub_cmd_vtysh, - "debug ospf ism (status|events|timers)", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Interface State Machine\n" - "ISM Status Information\n" - "ISM Event Information\n" - "ISM TImer Information\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, no_ipv6_access_list_exact_cmd_vtysh, - "no ipv6 access-list WORD (deny|permit) X:X::X:X/M exact-match", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 3ffe:506::/32\n" - "Exact match of the prefixes\n") - -DEFSH (VTYSH_BGPD, bgp_distance_cmd_vtysh, - "distance bgp <1-255> <1-255> <1-255>", - "Define an administrative distance\n" - "BGP distance\n" - "Distance for routes external to the AS\n" - "Distance for routes internal to the AS\n" - "Distance for local routes\n") - -DEFSH (VTYSH_BGPD, neighbor_shutdown_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "shutdown", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Administratively shut down this neighbor\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_other_config_flag_cmd_vtysh, - "ipv6 nd other-config-flag", - "IP information\n" - "Neighbor discovery\n" - "Other statefull configuration flag\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_retransmit_interval_cmd_vtysh, - "ip ospf retransmit-interval <3-65535>", - "IP Information\n" - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n" - "Seconds\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_kernel_routemap_cmd_vtysh, - "no redistribute kernel route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, no_passive_interface_addr_cmd_vtysh, - "no passive-interface IFNAME A.B.C.D", - "Negate a command or set its defaults\n" - "Allow routing updates on an interface\n" - "Interface's name\n") - -DEFSH (VTYSH_BGPD, no_debug_bgp_normal_cmd_vtysh, - "no debug bgp", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "BGP information\n") - -DEFSH (VTYSH_BGPD, no_neighbor_override_capability_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "override-capability", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Override capability negotiation result\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_key_cmd_vtysh, - "ip ospf authentication-key AUTH_KEY", - "IP Information\n" - "OSPF interface commands\n" - "Authentication password (key)\n" - "The OSPF password (key)") - -DEFSH (VTYSH_OSPFD, no_ospf_dead_interval_cmd_vtysh, - "no ospf dead-interval", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Interval after which a neighbor is declared dead\n") - -DEFSH (VTYSH_BGPD, debug_bgp_filter_cmd_vtysh, - "debug bgp filters", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP filters\n") - -DEFSH (VTYSH_RIPD, rip_offset_list_cmd_vtysh, - "offset-list WORD (in|out) <0-16>", - "Modify RIP metric\n" - "Access-list name\n" - "For incoming updates\n" - "For outgoing updates\n" - "Metric value\n") - -DEFSH (VTYSH_BGPD, neighbor_enforce_multihop_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "enforce-multihop", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Enforce EBGP neighbors perform multihop\n") - -DEFSH (VTYSH_BGPD, no_neighbor_dont_capability_negotiate_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "dont-capability-negotiate", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Do not perform capability negotiation\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community_exact_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, no_bgp_router_id_val_cmd_vtysh, - "no bgp router-id A.B.C.D", - "Negate a command or set its defaults\n" - "BGP information\n" - "Override configured router identifier\n" - "Manually configured router identifier\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_soft_in_cmd_vtysh, - "clear ip bgp A.B.C.D soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_prefix_list_cmd_vtysh, - "show ip bgp flap-statistics prefix-list WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Display routes conforming to the prefix-list\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community2_exact_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_ZEBRA, shutdown_if_cmd_vtysh, - "shutdown", - "Shutdown the selected interface\n") - -DEFSH (VTYSH_BGPD, no_set_atomic_aggregate_cmd_vtysh, - "no set atomic-aggregate", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP atomic aggregate attribute\n" ) - -DEFSH (VTYSH_RIPD, show_ip_rip_cmd_vtysh, - "show ip rip", - "Show running system information\n" - "IP information\n" - "Show RIP routes\n") - -DEFSH (VTYSH_BGPD, no_neighbor_default_originate_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "default-originate", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Originate default route to this neighbor\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_metric_type_routemap_cmd_vtysh, - "default-information originate always metric <0-16777214> metric-type (1|2) route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_dampening_address_cmd_vtysh, - "clear ip bgp dampening A.B.C.D", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear route flap dampening information\n" - "Network to clear damping information\n") - -DEFSH (VTYSH_BGPD, show_bgp_community_list_cmd_vtysh, - "show bgp community-list WORD", - "Show running system information\n" - "BGP information\n" - "Display routes matching the community-list\n" - "community-list name\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_as_soft_cmd_vtysh, - "clear bgp ipv6 <1-65535> soft", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear peers with the AS number\n" - "Soft reconfig\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_set_ip_nexthop_cmd_vtysh, - "no set ip next-hop", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IP information\n" - "Next hop address\n") - -DEFSH (VTYSH_RIPD, rip_distance_source_cmd_vtysh, - "distance <1-255> A.B.C.D/M", - "Administrative distance\n" - "Distance value\n" - "IP source prefix\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_ospf6_metric_routemap_cmd_vtysh, - "redistribute ospf6 metric <0-16> route-map WORD", - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_ZEBRA, ip_route_cmd_vtysh, - "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0)", - "IP information\n" - "Establish static routes\n" - "IP destination prefix (e.g. 10.0.0.0/8)\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_cmd_vtysh, - "clear ip bgp external", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_any_any_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip any any", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Any source host\n" - "Any destination host\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv6_rmap_metric_cmd_vtysh, - "redistribute (connected|kernel|ospf6|ripng|static) route-map WORD metric <0-4294967295>", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_seq_cmd_vtysh, - "ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) (X:X::X:X/M|any)", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Any prefix match. Same as \"::0/0 le 128\"\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_route_map_cmd_vtysh, - "show ip bgp route-map WORD", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the route-map\n" - "A route-map to match on\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_ism_sub_cmd_vtysh, - "no debug ospf ism (status|events|timers)", - "Negate a command or set its defaults\n" - "Debugging functions\n" - "OSPF information\n" - "OSPF Interface State Machine\n" - "ISM Status Information\n" - "ISM Event Information\n" - "ISM Timer Information\n") - -DEFSH (VTYSH_RIPD, ip_rip_authentication_mode_cmd_vtysh, - "ip rip authentication mode (md5|text)", - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication mode\n" - "Keyed message digest\n" - "Clear text authentication\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_le_cmd_vtysh, - "ipv6 prefix-list WORD (deny|permit) X:X::X:X/M le <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_nsm_cmd_vtysh, - "debug ospf nsm", - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Neighbor State Machine\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_dampening_cmd_vtysh, - "clear ip bgp dampening", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear route flap dampening information\n") - -DEFSH (VTYSH_OSPFD, area_range_not_advertise_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M not-advertise", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "DoNotAdvertise this range\n") - -DEFSH (VTYSH_BGPD, no_match_community_val_cmd_vtysh, - "no match community (<1-99>|<100-199>|WORD)", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP community list\n" - "Community-list number (standard)\n" - "Community-list number (expanded)\n" - "Community-list name\n") - -DEFSH (VTYSH_OSPFD|VTYSH_OSPFD, show_ip_ospf_neighbor_id_cmd_vtysh, - "show ip ospf neighbor A.B.C.D", - "Show running system information\n" - "IP information\n" - "OSPF information\n" - "Neighbor list\n" - "Neighbor ID\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_seq_ge_le_cmd_vtysh, - "no ip prefix-list WORD seq <1-4294967295> (deny|permit) A.B.C.D/M ge <0-32> le <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n") - -DEFSH (VTYSH_BGPD, clear_bgp_external_soft_in_cmd_vtysh, - "clear bgp external soft in", - "Reset functions\n" - "BGP information\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, area_range_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n") - -DEFSH (VTYSH_OSPFD, no_area_stub_no_summary_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) stub no-summary", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Configure OSPF area as stub\n" - "Do not inject inter-area routes into area\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_external_inter_cmd_vtysh, - "distance ospf external <1-255> inter-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "External routes\n" - "Distance for external routes\n" - "Inter-area routes\n" - "Distance for inter-area routes\n") - -DEFSH (VTYSH_BGPD, no_neighbor_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) ", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n") - -DEFSH (VTYSH_OSPFD, area_export_list_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) export-list NAME", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Set the filter for networks announced to other areas\n" - "Name of the access-list\n") - -DEFSH (VTYSH_OSPFD, no_ospf_compatible_rfc1583_cmd_vtysh, - "no compatible rfc1583", - "Negate a command or set its defaults\n" - "OSPF compatibility list\n" - "compatible with RFC 1583\n") - -DEFSH (VTYSH_BGPD, no_match_ecommunity_cmd_vtysh, - "no match extcommunity", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP/VPN extended community list\n") - -DEFSH (VTYSH_BGPD, set_ipv6_nexthop_local_cmd_vtysh, - "set ipv6 next-hop local X:X::X:X", - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 local address\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_BGPD, debug_bgp_keepalive_cmd_vtysh, - "debug bgp keepalives", - "Debugging functions (see also 'undebug')\n" - "BGP information\n" - "BGP keepalives\n") - -DEFSH (VTYSH_OSPFD, area_import_list_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) import-list NAME", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Set the filter for networks from other areas announced to the specified one\n" - "Name of the access-list\n") - -DEFSH (VTYSH_BGPD, dump_bgp_routes_cmd_vtysh, - "dump bgp routes-mrt PATH", - "Dump packet\n" - "BGP packet dump\n" - "Dump whole BGP routing table\n" - "Output filename\n") - -DEFSH (VTYSH_BGPD, no_match_aspath_val_cmd_vtysh, - "no match as-path WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "Match BGP AS path list\n" - "AS path access-list name\n") - -DEFSH (VTYSH_BGPD, no_synchronization_cmd_vtysh, - "no synchronization", - "Negate a command or set its defaults\n" - "Perform IGP synchronization\n") - -DEFSH (VTYSH_BGPD, neighbor_capability_dynamic_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "capability dynamic", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_soft_in_cmd_vtysh, - "clear ip bgp peer-group WORD soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_instance_all_soft_cmd_vtysh, - "clear bgp view WORD * soft", - "Reset functions\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n" - "Soft reconfig\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_group_cmd_vtysh, - "clear ip bgp peer-group WORD", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_mask_summary_as_set_cmd_vtysh, - "no aggregate-address A.B.C.D A.B.C.D summary-only as-set", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Filter more specific routes from updates\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_RIPD, no_rip_redistribute_type_routemap_cmd_vtysh, - "no redistribute (kernel|connected|static|ospf|bgp) route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_metric_cmd_vtysh, - "default-information originate always metric <0-16777214>", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "OSPF metric type for default routes\n") - -DEFSH (VTYSH_OSPFD, no_area_vlink_param4_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval) " - "(hello-interval|retransmit-interval|transmit-delay|dead-interval)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n" - "Time between HELLO packets\n" "Time between retransmitting lost link state advertisements\n" "Link state transmit delay\n" "Interval after which a neighbor is declared dead\n" "Seconds\n") - -DEFSH (VTYSH_BGPD, no_set_originator_id_val_cmd_vtysh, - "no set originator-id A.B.C.D", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP originator ID attribute\n" - "IP address of originator\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_cmd_vtysh, - "ipv6 prefix-list WORD (deny|permit) (X:X::X:X/M|any)", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Any prefix match. Same as \"::0/0 le 128\"\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, ip_prefix_list_ge_cmd_vtysh, - "ip prefix-list WORD (deny|permit) A.B.C.D/M ge <0-32>", - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_RIPD, no_debug_rip_zebra_cmd_vtysh, - "no debug rip zebra", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP and ZEBRA communication\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_cidr_only_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) cidr-only", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display only routes with non-natural netmasks\n") - -DEFSH (VTYSH_BGPD, set_local_pref_cmd_vtysh, - "set local-preference <0-4294967295>", - "Set values in destination routing protocol\n" - "BGP local preference path attribute\n" - "Preference value\n") - -DEFSH (VTYSH_BGPD, bgp_bestpath_med_cmd_vtysh, - "bgp bestpath med (confed|missing-as-worst)", - "BGP specific commands\n" - "Change the default bestpath selection\n" - "MED attribute\n" - "Compare MED among confederation paths\n" - "Treat missing MED as the least preferred one\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_addr_cmd_vtysh, - "ip ospf authentication A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, no_neighbor_local_as_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a local-as number\n") - -DEFSH (VTYSH_RIPNGD, no_debug_ripng_packet_direct_cmd_vtysh, - "no debug ripng packet (recv|send)", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng packet\n" - "Debug option set for receive packet\n" - "Debug option set for send packet\n") - -DEFSH (VTYSH_OSPFD, neighbor_priority_cmd_vtysh, - "neighbor A.B.C.D priority <0-255>", - "Specify neighbor router\n" - "Neighbor IP address\n" - "Neighbor Priority\n" - "Seconds\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged7_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged next-hop med as-path", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "Nexthop attribute\n" - "Med attribute\n" - "As-path attribute\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_extended_mask_host_cmd_vtysh, - "no access-list (<100-199>|<2000-2699>) (deny|permit) ip A.B.C.D A.B.C.D host A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP extended access list\n" - "IP extended access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any Internet Protocol\n" - "Source address\n" - "Source wildcard bits\n" - "A single destination host\n" - "Destination address\n") - -DEFSH (VTYSH_RIPD, debug_rip_packet_cmd_vtysh, - "debug rip packet", - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP packet\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_connected_metric_routemap_cmd_vtysh, - "redistribute connected metric <0-16> route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_authentication_args_cmd_vtysh, - "ip ospf authentication (null|message-digest)", - "IP Information\n" - "OSPF interface commands\n" - "Enable authentication on this interface\n" - "Use null authentication\n" - "Use message-digest authentication\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_route_cmd_vtysh, - "show ipv6 mbgp X:X::X:X", - "Show running system information\n" - "IP information\n" - "MBGP information\n" - "Network in the MBGP routing table to display\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_vpnv4_in_cmd_vtysh, - "clear ip bgp <1-65535> vpnv4 unicast in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, ipv6_access_list_cmd_vtysh, - "ipv6 access-list WORD (deny|permit) X:X::X:X/M", - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Prefix to match. e.g. 3ffe:506::/32\n") - -DEFSH (VTYSH_BGPD, show_bgp_community4_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, no_area_range_advertise_cmd_vtysh, - "no area (A.B.C.D|<0-4294967295>) range A.B.C.D/M (advertise|not-advertise)", - "Negate a command or set its defaults\n" - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Summarize routes matching address/mask (border routers only)\n" - "Area range prefix\n" - "Advertise this range (default)\n" - "DoNotAdvertise this range\n") - -DEFSH (VTYSH_RIPNGD, debug_ripng_packet_direct_cmd_vtysh, - "debug ripng packet (recv|send)", - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng packet\n" - "Debug option set for receive packet\n" - "Debug option set for send packet\n") - -DEFSH (VTYSH_BGPD, no_auto_summary_cmd_vtysh, - "no auto-summary", - "Negate a command or set its defaults\n" - "Enable automatic network number summarization\n") - -DEFSH (VTYSH_BGPD, neighbor_allowas_in_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "allowas-in", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Accept as-path with my AS present in it\n") - -DEFSH (VTYSH_BGPD, no_neighbor_capability_dynamic_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "capability dynamic", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") - -DEFSH (VTYSH_OSPF6D|VTYSH_BGPD, no_match_ipv6_address_prefix_list_cmd_vtysh, - "no match ipv6 address prefix-list WORD", - "Negate a command or set its defaults\n" - "Match values from routing table\n" - "IPv6 information\n" - "Match address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_network_cmd_vtysh, - "no ip ospf network", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Network type\n") - -DEFSH (VTYSH_BGPD, bgp_bestpath_aspath_ignore_cmd_vtysh, - "bgp bestpath as-path ignore", - "BGP specific commands\n" - "Change the default bestpath selection\n" - "AS-path attribute\n" - "Ignore as-path length in selecting a route\n") - -DEFSH (VTYSH_BGPD, show_ip_extcommunity_list_arg_cmd_vtysh, - "show ip extcommunity-list (<1-199>|WORD)", - "Show running system information\n" - "IP information\n" - "List extended-community list\n" - "Extcommunity-list number\n" - "Extcommunity-list name\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_vpnv4_all_neighbors_peer_cmd_vtysh, - "show ip bgp vpnv4 all neighbors A.B.C.D", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n") - -DEFSH (VTYSH_BGPD, ip_community_list_name_expanded_cmd_vtysh, - "ip community-list expanded WORD (deny|permit) .LINE", - "IP information\n" - "Add a community list entry\n" - "Add an expanded community-list entry\n" - "Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "An ordered list as a regular-expression\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_ospf6_routemap_cmd_vtysh, - "redistribute ospf6 route-map WORD", - "Redistribute information from another routing protocol\n" - "IPv6 Open Shortest Path First (OSPFv3)\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_vpnv4_out_cmd_vtysh, - "clear ip bgp * vpnv4 unicast out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_out_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD, ip_rip_receive_version_2_cmd_vtysh, - "ip rip receive version 2 1", - "IP information\n" - "Routing Information Protocol\n" - "Advertisement reception\n" - "Version control\n" - "RIP version 2\n" - "RIP version 1\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_remark_arg_cmd_vtysh, - "no access-list (<1-99>|<100-199>|<1300-1999>|<2000-2699>|WORD) remark .LINE", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP extended access list\n" - "IP standard access list (expanded range)\n" - "IP extended access list (expanded range)\n" - "IP zebra access-list\n" - "Access list entry comment\n" - "Comment up to 100 characters\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_prefix_list_cmd_vtysh, - "show bgp ipv6 prefix-list WORD", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Display routes conforming to the prefix-list\n" - "IPv6 prefix-list name\n") - -DEFSH (VTYSH_RIPD, no_debug_rip_packet_direct_cmd_vtysh, - "no debug rip packet (recv|send)", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP packet\n" - "RIP option set for receive packet\n" - "RIP option set for send packet\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_le_ge_cmd_vtysh, - "no ip prefix-list WORD (deny|permit) A.B.C.D/M le <0-32> ge <0-32>", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_community2_exact_cmd_vtysh, - "show ip bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPFD, no_ospf_default_metric_cmd_vtysh, - "no default-metric", - "Negate a command or set its defaults\n" - "Set metric of redistributed routes\n") - -DEFSH (VTYSH_BGPD, no_set_community_none_cmd_vtysh, - "no set community none", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP community attribute\n" - "No community attribute\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_flap_regexp_cmd_vtysh, - "show ip bgp flap-statistics regexp .LINE", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Display flap statistics of routes\n" - "Display routes matching the AS path regular expression\n" - "A regular-expression to match the BGP AS paths\n") - -DEFSH (VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPF6D, router_zebra_cmd_vtysh, - "router zebra", - "Enable a routing process\n" - "Make connection to zebra daemon\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv4_rmap_metric_cmd_vtysh, - "redistribute (connected|kernel|ospf|rip|static) route-map WORD metric <0-4294967295>", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, no_set_aggregator_as_val_cmd_vtysh, - "no set aggregator as <1-65535> A.B.C.D", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP aggregator attribute\n" - "AS number of aggregator\n" - "AS number\n" - "IP address of aggregator\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_out_cmd_vtysh, - "clear bgp ipv6 (A.B.C.D|X:X::X:X) out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_inter_external_cmd_vtysh, - "distance ospf inter-area <1-255> external <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "External routes\n" - "Distance for external routes\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_static_metric_routemap_cmd_vtysh, - "no redistribute static metric <0-16> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Metric\n" - "Metric value\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_OSPFD, no_ospf_priority_cmd_vtysh, - "no ospf priority", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Router priority\n") - -DEFSH (VTYSH_BGPD, set_origin_cmd_vtysh, - "set origin (egp|igp|incomplete)", - "Set values in destination routing protocol\n" - "BGP origin code\n" - "remote EGP\n" - "local IGP\n" - "unknown heritage\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_nsm_sub_cmd_vtysh, - "no debug ospf nsm (status|events|timers)", - "Negate a command or set its defaults\n" - "Debugging functions\n" - "OSPF information\n" - "OSPF Interface State Machine\n" - "NSM Status Information\n" - "NSM Event Information\n" - "NSM Timer Information\n") - -DEFSH (VTYSH_OSPFD, ospf_redistribute_source_cmd_vtysh, - "redistribute (kernel|connected|static|rip|bgp)", - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Routing Information Protocol (RIP)\n" - "Border Gateway Protocol (BGP)\n") - -DEFSH (VTYSH_RIPD, debug_rip_events_cmd_vtysh, - "debug rip events", - "Debugging functions (see also 'undebug')\n" - "RIP information\n" - "RIP events\n") - -DEFSH (VTYSH_ZEBRA, no_ip_route_mask_cmd_vtysh, - "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0)", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IP destination prefix\n" - "IP destination prefix mask\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_cmd_vtysh, - "clear ip bgp *", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_priority_addr_cmd_vtysh, - "ip ospf priority <0-255> A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Router priority\n" - "Priority\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_always_type_metric_cmd_vtysh, - "default-information originate always metric-type (1|2) metric <0-16777214>", - "Control distribution of default information\n" - "Distribute a default route\n" - "Always advertise default route\n" - "OSPF metric type for default routes\n" - "Set OSPF External Type 1 metrics\n" - "Set OSPF External Type 2 metrics\n" - "OSPF default metric\n" - "OSPF metric\n") - -DEFSH (VTYSH_BGPD, neighbor_route_map_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "route-map WORD (in|out)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Apply route map to neighbor\n" - "Name of route map\n" - "Apply map to incoming routes\n" - "Apply map to outbound routes\n") - -DEFSH (VTYSH_RIPNGD, debug_ripng_events_cmd_vtysh, - "debug ripng events", - "Debugging functions (see also 'undebug')\n" - "RIPng configuration\n" - "Debug option set for ripng events\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, clear_ip_prefix_list_name_cmd_vtysh, - "clear ip prefix-list WORD", - "Reset functions\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_zebra_cmd_vtysh, - "no debug ospf zebra", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF Zebra information\n") - -DEFSH (VTYSH_OSPFD, ospf_distance_ospf_inter_intra_cmd_vtysh, - "distance ospf inter-area <1-255> intra-area <1-255>", - "Define an administrative distance\n" - "OSPF Administrative distance\n" - "Inter-area routes\n" - "Distance for inter-area routes\n" - "Intra-area routes\n" - "Distance for intra-area routes\n") - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community_exact_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_external_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp external ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_OSPF6D, no_passive_interface_cmd_vtysh, - "no passive-interface IFNAME", - "Negate a command or set its defaults\n" - "Suppress routing updates on an interface\n" - "Interface name(e.g. ep0)\n") - -DEFSH (VTYSH_ZEBRA, ip_address_label_cmd_vtysh, - "ip address A.B.C.D/M label LINE", - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP address (e.g. 10.0.0.1/8)\n" - "Label of this address\n" - "Label\n") - -DEFSH (VTYSH_BGPD, bgp_damp_unset_cmd_vtysh, - "no bgp dampening", - "Negate a command or set its defaults\n" - "BGP Specific commands\n" - "Enable route-flap dampening\n") - -DEFSH (VTYSH_OSPF6D, no_debug_ospf6_all_cmd_vtysh, - "no debug ospf6 all", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Turn off ALL OSPFv3 debugging\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_standard_cmd_vtysh, - "no access-list (<1-99>|<1300-1999>) (deny|permit) A.B.C.D A.B.C.D", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Address to match\n" - "Wildcard bits\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_neighbor_received_prefix_filter_cmd_vtysh, - "show ip bgp neighbors (A.B.C.D|X:X::X:X) received prefix-filter", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display information received from a BGP neighbor\n" - "Display the prefixlist filter\n") - -DEFSH (VTYSH_OSPFD, area_default_cost_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Set the summary-default cost of a NSSA or stub area\n" - "Stub's advertised default summary cost\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_peer_group_in_cmd_vtysh, - "clear bgp ipv6 peer-group WORD in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_all_in_cmd_vtysh, - "clear bgp * in", - "Reset functions\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_topology_router_lsid_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D topology (A.B.C.D|<0-4294967295>) (A.B.C.D|<0-4294967295>)", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Shortest Path First tree information\n" - "Displays SPF topology table\n" - "Specify Router-ID\n" - "Specify Router-ID\n" - "Specify Link State ID\n" - "Specify Link State ID\n" - ) - -DEFSH (VTYSH_BGPD, show_ipv6_mbgp_community3_cmd_vtysh, - "show ipv6 mbgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, bgp_damp_set_cmd_vtysh, - "bgp dampening <1-45> <1-20000> <1-20000> <1-255>", - "BGP Specific commands\n" - "Enable route-flap dampening\n" - "Half-life time for the penalty\n" - "Value to start reusing a route\n" - "Value to start suppressing a route\n" - "Maximum duration to suppress a stable route\n") - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_instance_cmd_vtysh, - "ipv6 ospf6 instance-id INSTANCE", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Instance ID\n" - "<0-255> Instance ID\n" - ) - -DEFSH (VTYSH_BGPD, no_dump_bgp_routes_cmd_vtysh, - "no dump bgp routes-mrt [PATH] [INTERVAL]", - "Negate a command or set its defaults\n" - "Dump packet\n" - "BGP packet dump\n" - "Dump whole BGP routing table\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_route_cmd_vtysh, - "no route IPV6ADDR", - "Negate a command or set its defaults\n" - "Static route setup\n" - "Delete static RIPng route announcement\n") - -DEFSH (VTYSH_BGPD, no_aggregate_address_mask_as_set_cmd_vtysh, - "no aggregate-address A.B.C.D A.B.C.D as-set", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_BGPD, no_bgp_confederation_peers_cmd_vtysh, - "no bgp confederation peers .<1-65535>", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "AS confederation parameters\n" - "Peer ASs in BGP confederation\n" - "AS number\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community4_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_BGPD, no_set_weight_val_cmd_vtysh, - "no set weight <0-4294967295>", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "BGP weight for routing table\n" - "Weight value\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community_list_exact_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community-list WORD exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the community-list\n" - "community-list name\n" - "Exact match of the communities\n") - -DEFSH (VTYSH_BGPD, bgp_scan_time_cmd_vtysh, - "bgp scan-time <5-60>", - "BGP specific commands\n" - "Configure background scanner interval\n" - "Scanner interval (seconds)\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community3_exact_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_peer_vpnv4_in_cmd_vtysh, - "clear ip bgp A.B.C.D vpnv4 unicast in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_authentication_key_addr_cmd_vtysh, - "no ip ospf authentication-key A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Authentication password (key)\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, ipv6_aggregate_address_summary_only_cmd_vtysh, - "aggregate-address X:X::X:X/M summary-only", - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, ipv6_mbgp_neighbor_routes_cmd_vtysh, - "show ipv6 mbgp neighbors (A.B.C.D|X:X::X:X) routes", - "Show running system information\n" - "IPv6 information\n" - "MBGP information\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display routes learned from neighbor\n") - -DEFSH (VTYSH_RIPD, accept_lifetime_infinite_month_day_cmd_vtysh, - "accept-lifetime HH:MM:SS MONTH <1-31> <1993-2035> infinite", - "Set accept lifetime of the key\n" - "Time to start\n" - "Month of the year to start\n" - "Day of th month to start\n" - "Year to start\n" - "Never expires") - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_seq_le_ge_cmd_vtysh, - "ipv6 prefix-list WORD seq <1-4294967295> (deny|permit) X:X::X:X/M le <0-128> ge <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_external_soft_out_cmd_vtysh, - "clear bgp ipv6 external soft out", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all external peers\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_as_ipv4_in_prefix_filter_cmd_vtysh, - "clear ip bgp <1-65535> ipv4 (unicast|multicast) in prefix-filter", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged5_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path next-hop med", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_instance_neighbors_cmd_vtysh, - "show ip bgp view WORD neighbors", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "BGP view\n" - "View name\n" - "Detailed information on TCP and BGP neighbor connections\n") - -DEFSH (VTYSH_OSPF6D, no_ipv6_ospf6_passive_cmd_vtysh, - "no ipv6 ospf6 passive", - "Negate a command or set its defaults\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "passive interface: No Adjacency will be formed on this I/F\n" - ) - -DEFSH (VTYSH_OSPF6D, ipv6_ospf6_passive_cmd_vtysh, - "ipv6 ospf6 passive", - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "passive interface: No Adjacency will be formed on this I/F\n" - ) - -DEFSH (VTYSH_OSPFD, no_ip_ospf_authentication_key_cmd_vtysh, - "no ip ospf authentication-key", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Authentication password (key)\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_connected_metric_cmd_vtysh, - "redistribute connected metric <0-16>", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_OSPF6D, show_ipv6_ospf6_area_spf_node_cmd_vtysh, - "show ipv6 ospf6 area A.B.C.D spf node", - "Show running system information\n" - "IPv6 Information\n" - "Open Shortest Path First (OSPF) for IPv6\n" - "Area information\n" - "Area ID (as an IPv4 notation)\n" - "Shortest Path First caculation\n" - "vertex infomation\n" - ) - -DEFSH (VTYSH_RIPNGD|VTYSH_BGPD, ipv6_prefix_list_le_ge_cmd_vtysh, - "ipv6 prefix-list WORD (deny|permit) X:X::X:X/M le <0-128> ge <0-128>", - "IPv6 information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n" - "Maximum prefix length to be matched\n" - "Maximum prefix length\n" - "Minimum prefix length to be matched\n" - "Minimum prefix length\n") - -DEFSH (VTYSH_BGPD, bgp_cluster_id_cmd_vtysh, - "bgp cluster-id A.B.C.D", - "BGP information\n" - "Configure Route-Reflector Cluster-id\n" - "Route-Reflector Cluster-id in IP address format\n") - -DEFSH (VTYSH_OSPF6D, ospf6_redistribute_cmd_vtysh, - "redistribute (static|kernel|connected|ripng|bgp)", - "Redistribute\n" - "Static route\n" - "Kernel route\n" - "Connected route\n" - "RIPng route\n" - "BGP route\n" - ) - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_ipv4_soft_out_cmd_vtysh, - "clear ip bgp * ipv4 (unicast|multicast) soft out", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") - -DEFSH (VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD, no_access_list_standard_any_cmd_vtysh, - "no access-list (<1-99>|<1300-1999>) (deny|permit) any", - "Negate a command or set its defaults\n" - "Add an access list entry\n" - "IP standard access list\n" - "IP standard access list (expanded range)\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any source host\n") - -DEFSH (VTYSH_BGPD, set_ecommunity_soo_cmd_vtysh, - "set extcommunity soo .ASN:nn_or_IP-address:nn", - "Set values in destination routing protocol\n" - "BGP extended community attribute\n" - "Site-of-Origin extended community\n" - "VPN extended community\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv4_metric_cmd_vtysh, - "redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295>", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n") - -DEFSH (VTYSH_BGPD, clear_bgp_instance_all_cmd_vtysh, - "clear bgp view WORD *", - "Reset functions\n" - "BGP information\n" - "BGP view\n" - "view name\n" - "Clear all peers\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_managed_config_flag_cmd_vtysh, - "ipv6 nd managed-config-flag", - "IP information\n" - "Neighbor discovery\n" - "Managed address configuration flag\n") - -DEFSH (VTYSH_ZEBRA, ipv6_nd_send_ra_cmd_vtysh, - "ipv6 nd send-ra", - "IP information\n" - "Neighbor discovery\n" - "Send Router Advertisement\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_prefix_longer_cmd_vtysh, - "show bgp ipv6 X:X::X:X/M longer-prefixes", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "IPv6 prefix <network>/<length>\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, clear_bgp_as_soft_in_cmd_vtysh, - "clear bgp <1-65535> soft in", - "Reset functions\n" - "BGP information\n" - "Clear peers with the AS number\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, ipv6_access_list_any_cmd_vtysh, - "ipv6 access-list WORD (deny|permit) any", - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "Any prefixi to match\n") - -DEFSH (VTYSH_OSPFD, no_ospf_retransmit_interval_cmd_vtysh, - "no ospf retransmit-interval", - "Negate a command or set its defaults\n" - "OSPF interface commands\n" - "Time between retransmitting lost link state advertisements\n") - -DEFSH (VTYSH_BGPD, no_neighbor_timers_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "timers", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP per neighbor timers\n") - -DEFSH (VTYSH_BGPD, bgp_cluster_id32_cmd_vtysh, - "bgp cluster-id <1-4294967295>", - "BGP information\n" - "Configure Route-Reflector Cluster-id\n" - "Route-Reflector Cluster-id as 32 bit quantity\n") - -DEFSH (VTYSH_BGPD, old_no_ipv6_aggregate_address_summary_only_cmd_vtysh, - "no ipv6 bgp aggregate-address X:X::X:X/M summary-only", - "Negate a command or set its defaults\n" - "IPv6 information\n" - "BGP information\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, set_ipv6_nexthop_global_cmd_vtysh, - "set ipv6 next-hop global X:X::X:X", - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 global address\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_BGPD, no_set_ipv6_nexthop_local_val_cmd_vtysh, - "no set ipv6 next-hop local X:X::X:X", - "Negate a command or set its defaults\n" - "Set values in destination routing protocol\n" - "IPv6 information\n" - "IPv6 next-hop address\n" - "IPv6 local address\n" - "IPv6 address of next hop\n") - -DEFSH (VTYSH_ZEBRA, ip_address_secondary_cmd_vtysh, - "ip address A.B.C.D/M secondary", - "Interface Internet Protocol config commands\n" - "Set the IP address of an interface\n" - "IP address (e.g. 10.0.0.1/8)\n" - "Secondary IP address\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_message_digest_key_addr_cmd_vtysh, - "no ip ospf message-digest-key <1-255> A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n" - "Address of interface") - -DEFSH (VTYSH_BGPD, aggregate_address_mask_summary_as_set_cmd_vtysh, - "aggregate-address A.B.C.D A.B.C.D summary-only as-set", - "Configure BGP aggregate entries\n" - "Aggregate address\n" - "Aggregate mask\n" - "Filter more specific routes from updates\n" - "Generate AS set path information\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv6_cmd_vtysh, - "no redistribute (connected|kernel|ospf6|ripng|static)", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPFv3)\n" - "Routing Information Protocol (RIPng)\n" - "Static routes\n") - -DEFSH (VTYSH_ZEBRA, no_ip_route_cmd_vtysh, - "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0)", - "Negate a command or set its defaults\n" - "IP information\n" - "Establish static routes\n" - "IP destination prefix (e.g. 10.0.0.0/8)\n" - "IP gateway address\n" - "IP gateway interface name\n" - "Null interface\n") - -DEFSH (VTYSH_BGPD, neighbor_attr_unchanged2_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "attribute-unchanged as-path (next-hop|med)", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") - -DEFSH (VTYSH_BGPD, no_ipv6_aggregate_address_summary_only_cmd_vtysh, - "no aggregate-address X:X::X:X/M summary-only", - "Negate a command or set its defaults\n" - "Configure BGP aggregate entries\n" - "Aggregate prefix\n" - "Filter more specific routes from updates\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_prefix_longer_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) A.B.C.D/M longer-prefixes", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Display route and more specific routes\n") - -DEFSH (VTYSH_BGPD, no_bgp_deterministic_med_cmd_vtysh, - "no bgp deterministic-med", - "Negate a command or set its defaults\n" - "BGP specific commands\n" - "Pick the best-MED path among paths advertised from the neighboring AS\n") - -DEFSH (VTYSH_BGPD, show_ip_bgp_ipv4_community2_cmd_vtysh, - "show ip bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export)", - "Show running system information\n" - "IP information\n" - "BGP information\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n") - -DEFSH (VTYSH_OSPFD, area_vlink_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D", - "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure a virtual link\n" "Router ID of the remote ABR\n") - -DEFSH (VTYSH_OSPFD, debug_ospf_packet_send_recv_cmd_vtysh, - "debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv|detail)", - "Debugging functions\n" - "OSPF information\n" - "OSPF packets\n" - "OSPF Hello\n" - "OSPF Database Description\n" - "OSPF Link State Request\n" - "OSPF Link State Update\n" - "OSPF Link State Acknowledgment\n" - "OSPF all packets\n" - "Packet sent\n" - "Packet received\n" - "Detail information\n") - -DEFSH (VTYSH_BGPD, show_ipv6_bgp_community2_exact_cmd_vtysh, - "show ipv6 bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "IPv6 information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD, ipv6_access_list_remark_cmd_vtysh, - "ipv6 access-list WORD remark .LINE", - "IPv6 information\n" - "Add an access list entry\n" - "IPv6 zebra access-list\n" - "Access list entry comment\n" - "Comment up to 100 characters\n") - -DEFSH (VTYSH_OSPFD, no_ip_ospf_cost_addr_cmd_vtysh, - "no ip ospf cost A.B.C.D", - "Negate a command or set its defaults\n" - "IP Information\n" - "OSPF interface commands\n" - "Interface cost\n" - "Address of interface") - -DEFSH (VTYSH_OSPFD, area_stub_cmd_vtysh, - "area (A.B.C.D|<0-4294967295>) stub", - "OSPF area parameters\n" - "OSPF area ID in IP address format\n" - "OSPF area ID as a decimal value\n" - "Configure OSPF area as stub\n") - -DEFSH (VTYSH_ZEBRA, show_table_cmd_vtysh, - "show table", - "Show running system information\n" - "default routing table to use for all clients\n") - -DEFSH (VTYSH_BGPD, no_bgp_redistribute_ipv4_metric_rmap_cmd_vtysh, - "no redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295> route-map WORD", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_ZEBRA, show_ip_forwarding_cmd_vtysh, - "show ip forwarding", - "Show running system information\n" - "IP information\n" - "IP forwarding status\n") - -DEFSH (VTYSH_RIPNGD, ripng_redistribute_static_routemap_cmd_vtysh, - "redistribute static route-map WORD", - "Redistribute information from another routing protocol\n" - "Static routes\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, show_bgp_community_exact_cmd_vtysh, - "show bgp community (AA:NN|local-AS|no-advertise|no-export) exact-match", - "Show running system information\n" - "BGP information\n" - "Display routes matching the communities\n" - "community number\n" - "Do not send outside local AS (well-known community)\n" - "Do not advertise to any peer (well-known community)\n" - "Do not export to next AS (well-known community)\n" - "Exact match of the communities") - -DEFSH (VTYSH_OSPFD, no_debug_ospf_event_cmd_vtysh, - "no debug ospf event", - "Negate a command or set its defaults\n" - "Debugging functions (see also 'undebug')\n" - "OSPF information\n" - "OSPF event information\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_protocol_cmd_vtysh, - "show ip route (bgp|connected|kernel|ospf|rip|static)", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "Border Gateway Protocol (BGP)\n" - "Connected\n" - "Kernel\n" - "Open Shortest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n") - -DEFSH (VTYSH_BGPD, ip_extcommunity_list_name_standard_cmd_vtysh, - "ip extcommunity-list standard WORD (deny|permit) .AA:NN", - "IP information\n" - "Add a extended community list entry\n" - "Specify standard extcommunity-list\n" - "Extended Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Extended community attribute in 'rt aa:nn_or_IPaddr:nn' OR 'soo aa:nn_or_IPaddr:nn' format\n") - -DEFSH (VTYSH_BGPD, no_bgp_cluster_id_cmd_vtysh, - "no bgp cluster-id", - "Negate a command or set its defaults\n" - "BGP information\n" - "Configure Route-Reflector Cluster-id\n") - -DEFSH (VTYSH_RIPD, no_ip_rip_authentication_mode_type_cmd_vtysh, - "no ip rip authentication mode (md5|text)", - "Negate a command or set its defaults\n" - "IP information\n" - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication mode\n" - "Keyed message digest\n" - "Clear text authentication\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_metric_cmd_vtysh, - "default-information originate metric <0-16777214>", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF default metric\n" - "OSPF metric\n") - -DEFSH (VTYSH_RIPNGD, show_debugging_ripng_cmd_vtysh, - "show debugging ripng", - "Show running system information\n" - "RIPng configuration\n" - "Debugging information\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_soft_in_cmd_vtysh, - "clear bgp peer-group WORD soft in", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, neighbor_ebgp_multihop_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "ebgp-multihop", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Allow EBGP neighbors not on directly connected networks\n") - -DEFSH (VTYSH_BGPD, match_aspath_cmd_vtysh, - "match as-path WORD", - "Match values from routing table\n" - "Match BGP AS path list\n" - "AS path access-list name\n") - -DEFSH (VTYSH_OSPFD, ospf_default_information_originate_metric_routemap_cmd_vtysh, - "default-information originate metric <0-16777214> route-map WORD", - "Control distribution of default information\n" - "Distribute a default route\n" - "OSPF default metric\n" - "OSPF metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, clear_ip_bgp_all_soft_in_cmd_vtysh, - "clear ip bgp * soft in", - "Reset functions\n" - "IP information\n" - "BGP information\n" - "Clear all peers\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_BGPD, clear_bgp_ipv6_all_in_cmd_vtysh, - "clear bgp ipv6 * in", - "Reset functions\n" - "BGP information\n" - "Address family\n" - "Clear all peers\n" - "Soft reconfig inbound update\n") - -DEFSH (VTYSH_ZEBRA, show_ip_route_addr_cmd_vtysh, - "show ip route A.B.C.D", - "Show running system information\n" - "IP information\n" - "IP routing table\n" - "Network in the IP routing table to display\n") - -DEFSH (VTYSH_RIPNGD, no_ripng_redistribute_bgp_metric_val_cmd_vtysh, - "no redistribute bgp metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_RIPD|VTYSH_BGPD, no_ip_prefix_list_seq_cmd_vtysh, - "no ip prefix-list WORD seq <1-4294967295> (deny|permit) (A.B.C.D/M|any)", - "Negate a command or set its defaults\n" - "IP information\n" - "Build a prefix list\n" - "Name of a prefix list\n" - "sequence number of an entry\n" - "Sequence number\n" - "Specify packets to reject\n" - "Specify packets to forward\n" - "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" - "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") - -DEFSH (VTYSH_RIPD, no_rip_redistribute_type_metric_cmd_vtysh, - "no redistribute (kernel|connected|static|ospf|bgp) metric <0-16>", - "Negate a command or set its defaults\n" - "Redistribute information from another routing protocol\n" - "Kernel routes\n" - "Connected\n" - "Static routes\n" - "Open Shortest Path First (OSPF)\n" - "Border Gateway Protocol (BGP)\n" - "Metric\n" - "Metric value\n") - -DEFSH (VTYSH_ZEBRA, show_ipv6_route_prefix_longer_cmd_vtysh, - "show ipv6 route X:X::X:X/M longer-prefixes", - "Show running system information\n" - "IP information\n" - "IPv6 routing table\n" - "IPv6 prefix\n" - "Show route matching the specified Network/Mask pair only\n") - -DEFSH (VTYSH_BGPD, neighbor_weight_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "weight <0-65535>", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Set default weight for routes from this neighbor\n" - "default weight\n") - -DEFSH (VTYSH_BGPD, clear_bgp_peer_group_in_prefix_filter_cmd_vtysh, - "clear bgp peer-group WORD in prefix-filter", - "Reset functions\n" - "BGP information\n" - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Soft reconfig inbound update\n" - "Push out prefix-list ORF and do inbound soft reconfig\n") - -DEFSH (VTYSH_BGPD, bgp_distance_source_cmd_vtysh, - "distance <1-255> A.B.C.D/M", - "Define an administrative distance\n" - "Administrative distance\n" - "IP source prefix\n") - -DEFSH (VTYSH_BGPD, no_neighbor_local_as_val_cmd_vtysh, - "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as <1-65535>", - "Negate a command or set its defaults\n" - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Specify a local-as number\n" - "AS number used as local AS\n") - -DEFSH (VTYSH_BGPD, no_ip_extcommunity_list_name_standard_cmd_vtysh, - "no ip extcommunity-list standard WORD (deny|permit) .AA:NN", - "Negate a command or set its defaults\n" - "IP information\n" - "Add a extended community list entry\n" - "Specify standard extcommunity-list\n" - "Extended Community list name\n" - "Specify community to reject\n" - "Specify community to accept\n" - "Extended community attribute in 'rt aa:nn_or_IPaddr:nn' OR 'soo aa:nn_or_IPaddr:nn' format\n") - -DEFSH (VTYSH_OSPFD, timers_spf_cmd_vtysh, - "timers spf <0-4294967295> <0-4294967295>", - "Adjust routing timers\n" - "OSPF SPF timers\n" - "Delay between receiving a change to SPF calculation\n" - "Hold time between consecutive SPF calculations\n") - -DEFSH (VTYSH_OSPFD, ip_ospf_message_digest_key_addr_cmd_vtysh, - "ip ospf message-digest-key <1-255> md5 KEY A.B.C.D", - "IP Information\n" - "OSPF interface commands\n" - "Message digest authentication password (key)\n" - "Key ID\n" - "Use MD5 algorithm\n" - "The OSPF password (key)" - "Address of interface") - -DEFSH (VTYSH_RIPNGD, no_ripng_passive_interface_cmd_vtysh, - "no passive-interface IFNAME", - "Negate a command or set its defaults\n" - "Suppress routing updates on an interface\n" - "Interface name\n") - -DEFSH (VTYSH_BGPD, no_bgp_timers_cmd_vtysh, - "no timers bgp", - "Negate a command or set its defaults\n" - "Adjust routing timers\n" - "BGP timers\n") - -DEFSH (VTYSH_BGPD, show_bgp_ipv6_neighbor_received_routes_cmd_vtysh, - "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) received-routes", - "Show running system information\n" - "BGP information\n" - "Address family\n" - "Detailed information on TCP and BGP neighbor connections\n" - "Neighbor to display information about\n" - "Neighbor to display information about\n" - "Display the received routes from neighbor\n") - -DEFSH (VTYSH_BGPD, bgp_redistribute_ipv4_metric_rmap_cmd_vtysh, - "redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295> route-map WORD", - "Redistribute information from another routing protocol\n" - "Connected\n" - "Kernel routes\n" - "Open Shurtest Path First (OSPF)\n" - "Routing Information Protocol (RIP)\n" - "Static routes\n" - "Metric for redistributed routes\n" - "Default metric\n" - "Route map reference\n" - "Pointer to route-map entries\n") - -DEFSH (VTYSH_BGPD, show_bgp_route_map_cmd_vtysh, - "show bgp route-map WORD", - "Show running system information\n" - "BGP information\n" - "Display routes matching the route-map\n" - "A route-map to match on\n") - -DEFSH (VTYSH_BGPD, neighbor_nexthop_self_cmd_vtysh, - "neighbor (A.B.C.D|X:X::X:X|WORD) " "next-hop-self", - "Specify neighbor router\n" - "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" - "Disable the next hop calculation for this neighbor\n") - -void -vtysh_init_cmd () -{ - install_element (BGP_NODE, &no_neighbor_activate_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ecommunity_val_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_string_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged4_cmd_vtysh); - install_element (BGP_NODE, &bgp_damp_unset2_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_damp_unset_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_seq_ge_le_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_sequence_number_cmd_vtysh); - install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_standard_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community_all_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_out_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_set_peer_group_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_route_cmd_vtysh); - install_element (BGP_NODE, &neighbor_transparent_as_cmd_vtysh); - install_element (RMAP_NODE, &no_match_community_val_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authkey_cmd_vtysh); - install_element (ZEBRA_NODE, &ripng_redistribute_ripng_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community3_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_neighbor_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_list_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_md5_cmd_vtysh); - install_element (BGP_NODE, &neighbor_prefix_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_passive_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_sequence_number_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ripng_events_cmd_vtysh); - install_element (CONFIG_NODE, &no_route_map_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_kernel_metric_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_set_peer_group_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community2_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_out_cmd_vtysh); - install_element (BGP_NODE, &neighbor_strict_capability_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_default_metric_val_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_paths_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_prefix_list_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_override_capability_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (OSPF_NODE, &area_range_substitute_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_route_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_database_type_id_adv_router_cmd_vtysh); - install_element (BGP_NODE, &bgp_cluster_id32_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_regexp_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_connected_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ripng_packet_cmd_vtysh); - install_element (OSPF_NODE, &area_shortcut_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_priority_addr_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbor_received_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_send_community_type_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_any_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_filter_list_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community_exact_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_aggregate_address_cmd_vtysh); - install_element (BGP_NODE, &bgp_cluster_id_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &no_key_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_prefix_list_cmd_vtysh); - install_element (RIP_NODE, &no_rip_distance_source_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_camp_config_cmd_vtysh); - install_element (BGP_NODE, &neighbor_dont_capability_negotiate_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_import_check_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_topology_router_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_as_set_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); - install_element (RMAP_NODE, &no_set_origin_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_forwarding_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_prefix_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_natural_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_ra_interval_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_adv_router_dump_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_next_hop_val_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_address_label_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community2_exact_cmd_vtysh); - install_element (BGP_NODE, &neighbor_shutdown_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_metric_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_cmd_vtysh); - install_element (OSPF_NODE, &area_filter_list_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_update_direct_cmd_vtysh); - install_element (ENABLE_NODE, &show_debugging_rip_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_name_cmd_vtysh); - install_element (BGP_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_advertise_force_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_debug_ospf6_damp_cmd_vtysh); - install_element (OSPF6_NODE, &interface_area_passive_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_routes_interval_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_summary_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_rip_zebra_cmd_vtysh); - install_element (OSPF_NODE, &no_router_id_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_view_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_host_mask_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_zebra_packet_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_ge_le_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_host_any_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); - install_element (BGP_NODE, &bgp_deterministic_med_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_instance_ipv6_summary_cmd_vtysh); - install_element (BGP_NODE, &neighbor_capability_dynamic_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd_vtysh); - install_element (RMAP_NODE, &no_rmap_onmatch_goto_cmd_vtysh); - install_element (BGP_NODE, &old_no_ipv6_aggregate_address_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_param4_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbors_peer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_topology_router_lsid_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community2_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_nsm_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_route_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_cmd_vtysh); - install_element (RIP_NODE, &rip_redistribute_type_metric_cmd_vtysh); - install_element (ENABLE_NODE, &reload_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_le_ge_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_updates_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_route_map_cmd_vtysh); - install_element (RMAP_NODE, &match_interface_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_hello_interval_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_regexp_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_ebgp_multihop_ttl_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_month_day_day_month_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community3_exact_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ecommunity_soo_val_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_confederation_identifier_arg_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community_all_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_topology_router_lsid_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_backdoor_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); - install_element (INTERFACE_NODE, &no_multicast_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_zebra_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community2_exact_cmd_vtysh); - install_element (OSPF6_NODE, &no_interface_area_cmd_vtysh); - install_element (CONFIG_NODE, &debug_rip_events_cmd_vtysh); - install_element (RMAP_NODE, &no_set_metric_val_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_instance_summary_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_static_metric_cmd_vtysh); - install_element (CONFIG_NODE, &no_dump_bgp_all_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_authtype_md5_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_topology_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged4_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_self_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_metric_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_rip_packet_direct_cmd_vtysh); - install_element (BGP_NODE, &neighbor_weight_cmd_vtysh); - install_element (OSPF_NODE, &neighbor_priority_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &key_string_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_static_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_description_arg_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_ism_sub_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_topology_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_summary_as_set_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_passive_interface_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community2_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_standard_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_route_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_normal_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community3_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged_cmd_vtysh); - install_element (RMAP_NODE, &set_metric_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_route_map_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_val2_cmd_vtysh); - install_element (RMAP_NODE, &set_community_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_route_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_retransmitinterval_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_seq_le_ge_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_distance2_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_distribute_list_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged5_cmd_vtysh); - install_element (BGP_NODE, &bgp_confederation_peers_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); - install_element (BGP_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_summary_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_seq_ge_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_neighbor_routerid_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_distribute_list_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community_exact_cmd_vtysh); - install_element (OSPF_NODE, &no_area_export_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_cost_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged6_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_route_distance_cmd_vtysh); - install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_mask_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_addr_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_cmd_vtysh); - install_element (RMAP_NODE, &match_aspath_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_in_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community2_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_neighbor_routerid_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_lsa_cmd_vtysh); - install_element (RMAP_NODE, &no_set_weight_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_in_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_route_map_cmd_vtysh); - install_element (BGP_NODE, &bgp_fast_external_failover_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_route_map_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged9_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_route_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ripng_events_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbors_peer_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_list_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_remove_private_as_cmd_vtysh); - install_element (BGP_NODE, &neighbor_remote_as_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_address_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_ospf6_metric_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_zebra_sub_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_out_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_nexthop_self_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_mask_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_summary_name_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_val2_cmd_vtysh); - install_element (RMAP_NODE, &no_match_community_exact_cmd_vtysh); - install_element (RMAP_NODE, &set_community_delete_cmd_vtysh); - install_element (OSPF_NODE, &no_area_default_cost_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_param2_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ripng_packet_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_received_prefix_filter_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_infinite_day_month_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_exact_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_route_map_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged2_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_send_community_cmd_vtysh); - install_element (BGP_NODE, &old_no_ipv6_aggregate_address_summary_only_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_address_secondary_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_route_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_filter_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_protocol_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_route_map_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged9_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_timers_arg_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_transmit_delay_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_nexthop_self_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ip_nexthop_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_out_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (OSPF6_NODE, &ospf6_redistribute_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_filter_list_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_confederation_identifier_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_in_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_bgp_neighbor_routes_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_bgp_neighbor_received_routes_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_send_community_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbors_peer_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_kernel_routemap_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_suppress_ra_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_zebra_events_cmd_vtysh); - install_element (RIP_NODE, &rip_redistribute_type_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_seq_ge_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_backdoor_cmd_vtysh); - install_element (BGP_NODE, &neighbor_ebgp_multihop_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_route_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community2_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community4_exact_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_ism_sub_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_le_ge_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_packet_send_recv_cmd_vtysh); - install_element (RMAP_NODE, &no_set_aspath_prepend_cmd_vtysh); - install_element (BGP_NODE, &neighbor_remove_private_as_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_update_source_cmd_vtysh); - install_element (BGP_NODE, &old_no_ipv6_bgp_network_cmd_vtysh); - install_element (OSPF_NODE, &area_range_cost_cmd_vtysh); - install_element (OSPF_NODE, &auto_cost_reference_bandwidth_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged10_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_route_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_mask_host_cmd_vtysh); - install_element (KEYCHAIN_NODE, &no_key_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_remote_as_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_spf_node_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_network_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_bgp_neighbor_routes_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_nexthop_self_cmd_vtysh); - install_element (BGP_NODE, &neighbor_default_originate_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community3_exact_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_default_metric_cmd_vtysh); - install_element (OSPF_NODE, &area_stub_no_summary_cmd_vtysh); - install_element (RMAP_NODE, &rmap_onmatch_next_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_topology_router_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_port_val_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_managed_config_flag_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_adv_router_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_interface_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_ebgp_multihop_ttl_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_send_community_type_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_address_label_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ripng_events_cmd_vtysh); - install_element (CONFIG_NODE, &no_router_ospf_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_regexp_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_passive_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_in_prefix_filter_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_advertisement_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd_vtysh); - install_element (CONFIG_NODE, &debug_rip_packet_detail_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_regexp_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_timers_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_filter_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_zebra_events_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_routes_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_distance_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged9_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_bestpath_compare_router_id_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_unsuppress_map_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged9_cmd_vtysh); - install_element (OSPF_NODE, &neighbor_priority_poll_interval_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_local_as_val_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_authentication_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_args_authkey_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_send_ra_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_description_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_received_routes_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_prefix_longer_cmd_vtysh); - install_element (BGP_NODE, &bgp_confederation_identifier_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf6_damp_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_static_metric_val_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_metric_type_routemap_cmd_vtysh); - install_element (BGP_NODE, &bgp_bestpath_med2_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd_vtysh); - install_element (OSPF_NODE, &no_area_range_cmd_vtysh); - install_element (RMAP_NODE, &rmap_onmatch_goto_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_address_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_prefix_list_name_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_connected_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_out_cmd_vtysh); - install_element (RIP_NODE, &no_rip_redistribute_type_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_prefix_list_name_prefix_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged4_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_bgp_metric_val_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbors_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_self_cmd_vtysh); - install_element (RMAP_NODE, &no_set_metric_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_remove_private_as_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_detail_cmd_vtysh); - install_element (OSPF_NODE, &no_auto_cost_reference_bandwidth_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_summary_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community4_cmd_vtysh); - install_element (OSPF_NODE, &no_area_range_cost_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_month_day_day_month_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_dampened_paths_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_prefix_filter_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_list_exact_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_access_list_exact_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_filter_list_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_update_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_filter_list_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_summary_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_connected_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_in_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_confederation_peers_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_filter_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_intra_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_le_ge_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_next_hop_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_all_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged4_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_remove_private_as_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_route_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_external_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_spf_node_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_zebra_sub_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_address_val_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_name_seq_cmd_vtysh); - install_element (CONFIG_NODE, &bgp_config_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_route_reflector_client_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community_all_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_ospf6_passive_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_mask_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community2_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_soft_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_activate_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_id_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_regexp_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_kernel_metric_val_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_as_path_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_route_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_route_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_remark_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged6_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_backdoor_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_ge_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_static_metric_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_le_cmd_vtysh); - install_element (BGP_NODE, &bgp_distance_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_summary_as_set_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_redistribute_source_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_kernel_metric_routemap_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_route_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_cmd_vtysh); - install_element (OSPF_NODE, &ospf_compatible_rfc1583_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_bestpath_med3_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_router_id_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community2_exact_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_filter_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_name_standard2_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_type_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ripng_packet_direct_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_enforce_multihop_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_route_mask_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_summary_only_cmd_vtysh); - install_element (OSPF6_NODE, &interface_area_plist_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_sequence_number_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_events_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_route_ifname_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community3_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_kernel_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_in_prefix_filter_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community_list_exact_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_keepalive_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_ra_lifetime_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_adv_router_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_allowas_in_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_cost_addr_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_all_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_list_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_distance_source_access_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_prefix_longer_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_addr_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_metric_routemap_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_access_list_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_route_reflector_client_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community3_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_prefix_advertisement_no_val_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbors_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_mask_route_map_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_route_map_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_route_server_client_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_soft_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_forwarding_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_default_originate_rmap_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_host_any_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_address_cmd_vtysh); - install_element (INTERFACE_NODE, &multicast_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_out_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_ra_lifetime_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_access_list_name_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_key_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community_list_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_id_adv_router_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community_cmd_vtysh); - install_element (RIP_NODE, &no_rip_neighbor_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_filter_list_cmd_vtysh); - install_element (OSPF_NODE, &no_refresh_timer_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ripng_packet_detail_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_as_set_summary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_timers_connect_val_cmd_vtysh); - install_element (BGP_NODE, &bgp_default_ipv4_unicast_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_in_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_scan_time_val_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_local_as_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_advertised_route_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_all_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_addr_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_instance_summary_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_soft_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ripng_packet_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_damp_set3_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_spf_tree_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_soft_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_as_path_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_routes_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_nsm_sub_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_route_map_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_remark_cmd_vtysh); - install_element (CONFIG_NODE, &no_zebra_interface_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_all_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_inter_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_val2_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_seq_le_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_static_metric_routemap_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_message_digest_key_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ipv6_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_type_cmd_vtysh); - install_element (OSPF_NODE, &ospf_abr_type_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_cmd_vtysh); - install_element (RIP_NODE, &rip_default_information_originate_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_le_ge_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_seq_ge_le_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &debug_zebra_packet_direct_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_external_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); - install_element (BGP_IPV6_NODE, &ipv6_bgp_network_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community3_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_prefix_longer_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_interface_cmd_vtysh); - install_element (BGP_NODE, &bgp_redistribute_ipv4_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_damp_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ipv6_nexthop_global_val_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); - install_element (ENABLE_NODE, &show_debug_ospf6_cmd_vtysh); - install_element (ENABLE_NODE, &debug_rip_packet_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community_all_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_param4_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_received_prefix_filter_cmd_vtysh); - install_element (OSPF_NODE, &no_passive_interface_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_passive_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_tags_cmd_vtysh); - install_element (OSPF_NODE, &area_range_advertise_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (OSPF_NODE, &passive_interface_addr_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_route_server_client_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbor_advertised_routes_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_message_digest_key_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community4_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_type_metric_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_bgp_metric_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community2_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_cmd_vtysh); - install_element (OSPF_NODE, &area_range_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_routes_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd_vtysh); - install_element (OSPF_NODE, &no_area_shortcut_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_route_prefix_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged5_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_val2_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community2_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_list_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_hello_interval_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_int_detail_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_intra_cmd_vtysh); - install_element (VIEW_NODE, &show_zebra_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_statistics_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_route_server_client_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_retransmit_interval_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_rfc1583_flag_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_name_standard_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_all_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_timers_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_bgp_metric_routemap_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community3_exact_cmd_vtysh); - install_element (ENABLE_NODE, &debug_zebra_events_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_distance_ospf_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_duration_day_month_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_protocols_rip_cmd_vtysh); - install_element (RIP_NODE, &rip_network_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community2_exact_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_allowas_in_arg_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_filter_list_cmd_vtysh); - install_element (RMAP_NODE, &set_vpnv4_nexthop_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_name_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_paths_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_route_mask_distance_cmd_vtysh); - install_element (OSPF_NODE, &area_stub_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_maximum_prefix_val2_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_route_server_client_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_month_day_month_day_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_activate_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_summary_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_mbgp_neighbor_advertised_route_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_mbgp_neighbor_advertised_route_cmd_vtysh); - install_element (ENABLE_NODE, &debug_zebra_packet_detail_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ip_nexthop_val_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_in_prefix_filter_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_filter_cmd_vtysh); - install_element (RIP_NODE, &rip_timers_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_authentication_key_chain_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_mask_as_set_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_hello_interval_addr_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_database_cmd_vtysh); - install_element (BGP_NODE, &no_auto_summary_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ipv6_address_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_cmd_vtysh); - install_element (INTERFACE_NODE, &rip_split_horizon_cmd_vtysh); - install_element (OSPF6_NODE, &no_ospf6_redistribute_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community_exact_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_remove_private_as_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_update_direct_cmd_vtysh); - install_element (RMAP_NODE, &set_aggregator_as_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); - install_element (RMAP_NODE, &no_match_community_cmd_vtysh); - install_element (ENABLE_NODE, &show_debugging_ospf_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_ospf6_routemap_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_summary_name_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_paths_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_address_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_database_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_address_val_cmd_vtysh); - install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_cmd_vtysh); - install_element (RMAP_NODE, &match_ipv6_address_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_arg_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged3_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_normal_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_damp_set_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_timers_cmd_vtysh); - install_element (RMAP_NODE, &match_community_cmd_vtysh); - install_element (RMAP_NODE, &no_set_community_none_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_metric_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community4_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_connected_metric_routemap_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_set_peer_group_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_int_detail_cmd_vtysh); - install_element (RIP_NODE, &no_rip_timers_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_type_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_cmd_vtysh); - install_element (BGP_NODE, &neighbor_timers_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_addr_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_zebra_packet_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_nsm_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_cmd_vtysh); - install_element (BGP_NODE, &bgp_damp_set3_cmd_vtysh); - install_element (CONFIG_NODE, &debug_zebra_packet_direct_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_topology_cmd_vtysh); - install_element (BGP_NODE, &neighbor_route_reflector_client_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged2_cmd_vtysh); - install_element (RMAP_NODE, &no_set_vpnv4_nexthop_val_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_rip_events_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_address_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_received_prefix_filter_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_ge_cmd_vtysh); - install_element (RIP_NODE, &no_rip_version_val_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_timers_connect_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community3_exact_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_event_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged6_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_routemap_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged5_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_nsm_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_summary_name_cmd_vtysh); - install_element (ENABLE_NODE, &show_table_cmd_vtysh); - install_element (RIP_NODE, &rip_route_cmd_vtysh); - install_element (OSPF_NODE, &area_default_cost_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_event_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_tags_cmd_vtysh); - install_element (BGP_NODE, &neighbor_route_map_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged9_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_route_cmd_vtysh); - install_element (ZEBRA_NODE, &no_ripng_redistribute_ripng_cmd_vtysh); - install_element (INTERFACE_NODE, &bandwidth_if_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_allowas_in_arg_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_bgp_metric_cmd_vtysh); - install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_rmap_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged3_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); - install_element (INTERFACE_NODE, &shutdown_if_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_longer_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_static_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_description_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_filter_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_detail_name_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_name_seq_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_send_ra_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_in_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_mbgp_neighbor_routes_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_lsa_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_filter_list_cmd_vtysh); - install_element (RMAP_NODE, &no_match_aspath_val_cmd_vtysh); - install_element (RIP_NODE, &no_rip_offset_list_ifname_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_lsa_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf6_all_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_zebra_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_attr_info_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_summary_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_filter_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_out_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_ism_sub_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_addr_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_route_ifname_pref_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community4_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_route_server_client_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ripng_zebra_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_suppress_ra_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged4_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_receive_version_1_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community2_exact_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_distribute_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_allowas_in_arg_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_zebra_kernel_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_route_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_out_cmd_vtysh); - install_element (BGP_NODE, &neighbor_route_server_client_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_router_id_val_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_send_version_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community4_exact_cmd_vtysh); - install_element (CONFIG_NODE, &debug_zebra_packet_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_view_route_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); - install_element (RIP_NODE, &rip_default_metric_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_soft_in_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_distribute_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_in_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_default_local_preference_val_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_nsm_sub_cmd_vtysh); - install_element (OSPF_NODE, &area_authentication_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_neighbor_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_detail_name_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_import_check_cmd_vtysh); - install_element (RMAP_NODE, &no_set_aspath_prepend_val_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_peer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_forwarding_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_remark_arg_cmd_vtysh); - install_element (BGP_NODE, &neighbor_activate_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_in_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community4_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_prefix_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ecommunity_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community4_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_addr_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_nexthop_self_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_dampening_address_mask_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged3_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_update_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_filter_list_cmd_vtysh); - install_element (BGP_NODE, &bgp_distance_source_access_list_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged5_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_detail_name_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_prefix_list_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_param3_cmd_vtysh); - install_element (OSPF_NODE, &no_neighbor_priority_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_summary_only_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_self_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_in_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_type_metric_routemap_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_hello_interval_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_mbgp_neighbor_received_routes_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community2_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_filter_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_send_version_cmd_vtysh); - install_element (CONFIG_NODE, &no_router_rip_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_address_cmd_vtysh); - install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_unsuppress_map_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_ism_cmd_vtysh); - install_element (ENABLE_NODE, &show_zebra_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_mask_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_param1_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_address_prefix_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_description_arg_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_version_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_id_cmd_vtysh); - install_element (ZEBRA_NODE, &redistribute_ospf6_cmd_vtysh); - install_element (RMAP_NODE, &set_ipv6_nexthop_local_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community_list_exact_cmd_vtysh); - install_element (RIP_NODE, &no_rip_default_metric_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged1_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_le_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_type_metric_cmd_vtysh); - install_element (RMAP_NODE, &no_match_origin_val_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_aggregate_address_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_cmd_vtysh); - install_element (BGP_NODE, &neighbor_unsuppress_map_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged8_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_out_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_type_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_neighborlist_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_in_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_detail_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_community_list_cmd_vtysh); - install_element (OSPF6_NODE, &passive_interface_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_remove_private_as_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_unsuppress_map_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community3_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_kernel_metric_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_default_local_preference_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ripng_packet_direct_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_any_mask_cmd_vtysh); - install_element (CONFIG_NODE, &debug_rip_zebra_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_route_map_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged1_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_out_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_ra_interval_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_prefix_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_scan_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_authentication_key_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); - install_element (VIEW_NODE, &show_debugging_zebra_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_ospf6_advertise_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_transmit_delay_cmd_vtysh); - install_element (BGP_NODE, &neighbor_send_community_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_in_cmd_vtysh); - install_element (RMAP_NODE, &no_set_originator_id_val_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_activate_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_route_map_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_database_type_id_adv_router_dump_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_prefix_list_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbor_routes_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged10_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_address_prefix_list_val_cmd_vtysh); - install_element (OSPF_NODE, &area_authentication_message_digest_cmd_vtysh); - install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_metric_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_soft_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_id_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_as_set_summary_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_receive_version_num_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_route_reflector_client_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_metric_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_route_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &debug_rip_zebra_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); - install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_allowas_in_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); - install_element (RMAP_NODE, &set_weight_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_retransmit_interval_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_fsm_cmd_vtysh); - install_element (RMAP_NODE, &no_match_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_packet_all_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_cmd_vtysh); - install_element (OSPF_NODE, &no_area_authentication_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_lsa_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ripng_packet_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_in_prefix_filter_cmd_vtysh); - install_element (CONFIG_NODE, &debug_rip_packet_direct_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged3_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_detail_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_normal_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_redistribute_ipv4_cmd_vtysh); - install_element (RMAP_NODE, &no_set_origin_val_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community2_exact_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_cmd_vtysh); - install_element (RMAP_NODE, &set_community_none_cmd_vtysh); - install_element (RMAP_NODE, &set_metric_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_advertise_interval_cmd_vtysh); - install_element (RIP_NODE, &rip_distance_source_access_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_local_as_no_prepend_cmd_vtysh); - install_element (BGP_NODE, &bgp_damp_set_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_standard_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged_cmd_vtysh); - install_element (CONFIG_NODE, &no_route_map_all_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_forwarding_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_out_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_allowas_in_cmd_vtysh); - install_element (RMAP_NODE, &match_ipv6_next_hop_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_route_map_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_cluster_id_arg_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_zebra_kernel_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_supernets_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_bgp_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ipv6_address_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_priority_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_in_prefix_filter_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_static_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_id_self_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ecommunity_rt_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_router_id_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community4_exact_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_args_md5_cmd_vtysh); - install_element (CONFIG_NODE, &ip_as_path_cmd_vtysh); - install_element (CONFIG_NODE, &no_router_zebra_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_detail_name_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community_exact_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_metric_type_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_next_hop_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community2_cmd_vtysh); - install_element (BGP_NODE, &bgp_client_to_client_reflection_cmd_vtysh); - install_element (BGP_NODE, &bgp_scan_time_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_cidr_only_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_mbgp_neighbor_routes_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_ge_le_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_send_community_type_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd_vtysh); - install_element (RMAP_NODE, &match_metric_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_day_month_day_month_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); - install_element (CONFIG_NODE, &no_bgp_config_type_cmd_vtysh); - install_element (OSPF_NODE, &no_passive_interface_addr_cmd_vtysh); - install_element (BGP_NODE, &old_ipv6_aggregate_address_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_forwarding_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged5_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_out_cmd_vtysh); - install_element (RIP_NODE, &no_rip_distance_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_name_seq_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_route_flapping_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged2_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_prefix_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged7_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_instance_all_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_mask_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_ospf6_advertise_force_prefix_cmd_vtysh); - install_element (OSPF6_NODE, &no_passive_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbors_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_ospf6_metric_cmd_vtysh); - install_element (RIP_NODE, &rip_offset_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_route_flapping_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community3_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_rip_events_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_cluster_id_cmd_vtysh); - install_element (OSPF_NODE, &router_id_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_ospf6_external_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_duration_month_day_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_deterministic_med_cmd_vtysh); - install_element (BGP_NODE, &neighbor_port_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_topology_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_detail_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_network_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_le_cmd_vtysh); - install_element (RMAP_NODE, &ospf6_routemap_set_forwarding_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_any_host_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_in_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_send_community_type_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_mask_any_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community_list_exact_cmd_vtysh); - install_element (RMAP_NODE, &ospf6_routemap_set_metric_type_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_natural_backdoor_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_prefix_longer_cmd_vtysh); - install_element (BGP_NODE, &neighbor_nexthop_self_cmd_vtysh); - install_element (RMAP_NODE, &no_set_local_pref_val_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbor_received_routes_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_network_cmd_vtysh); - install_element (BGP_NODE, &neighbor_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community3_exact_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_distribute_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_le_ge_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_fast_external_failover_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community3_exact_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_distribute_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_access_list_name_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_allowas_in_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_standard2_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_detail_all_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_keepalive_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_compatible_rfc1583_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_prefix_first_match_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); - install_element (OSPF6_NODE, &flap_damping_route_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_metric_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_strict_capability_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_route_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ecommunity_rt_val_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community_list_cmd_vtysh); - install_element (RMAP_NODE, &ospf6_routemap_no_set_metric_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_peer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_prefix_longer_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_any_host_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_rmap_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_summary_as_set_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community_cmd_vtysh); - install_element (CONFIG_NODE, &ip_route_mask_cmd_vtysh); - install_element (CONFIG_NODE, &debug_rip_packet_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_connected_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_in_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_mask_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_view_prefix_cmd_vtysh); - install_element (BGP_NODE, &bgp_damp_set2_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_route_server_client_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_route_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_in_cmd_vtysh); - install_element (OSPF_NODE, &no_refresh_timer_val_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community4_exact_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_route_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community3_exact_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_remove_private_as_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community_list_exact_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_connected_metric_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_spf_tree_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_ge_cmd_vtysh); - install_element (OSPF_NODE, &no_area_import_list_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_kernel_metric_routemap_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_intra_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_distance_source_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_view_route_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_out_cmd_vtysh); - install_element (VIEW_NODE, &show_table_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_update_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); - install_element (INTERFACE_NODE, &no_shutdown_if_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_fsm_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_route_map_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_normal_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_any_mask_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_prefix_longer_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_in_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_update_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_default_metric_cmd_vtysh); - install_element (OSPF_NODE, &ospf_router_id_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_ospf6_metric_routemap_cmd_vtysh); - install_element (RMAP_NODE, &no_match_origin_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_prefix_cmd_vtysh); - install_element (RMAP_NODE, &set_atomic_aggregate_cmd_vtysh); - install_element (BGP_NODE, &bgp_default_local_preference_cmd_vtysh); - install_element (BGP_NODE, &neighbor_update_source_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_abr_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbor_received_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_out_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_in_cmd_vtysh); - install_element (RMAP_NODE, &no_set_community_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_distribute_list_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_send_community_type_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_default_originate_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_prefix_filter_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); - install_element (BGP_NODE, &no_synchronization_cmd_vtysh); - install_element (OSPF_NODE, &neighbor_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community2_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_name_standard_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_in_prefix_filter_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_send_community_type_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_distance_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_out_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_authtype_authkey_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_cmd_vtysh); - install_element (OSPF_NODE, &area_range_not_advertise_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_fsm_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_default_originate_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_all_cmd_vtysh); - install_element (BGP_NODE, &bgp_always_compare_med_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community4_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_description_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_in_cmd_vtysh); - install_element (VIEW_NODE, &show_debug_ospf6_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_metric_type_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_all_interval_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); - install_element (BGP_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_dead_interval_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_metric_type_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_soft_out_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_key_addr_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_prefix_list_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_send_community_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community_list_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_shutdown_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_protocol_cmd_vtysh); - install_element (BGP_NODE, &bgp_timers_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain2_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbor_routes_cmd_vtysh); - install_element (CONFIG_NODE, &debug_zebra_events_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_nexthop_self_cmd_vtysh); - install_element (RMAP_NODE, &no_match_aspath_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_capability_route_refresh_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_expanded_cmd_vtysh); - install_element (ENABLE_NODE, &show_debugging_ripng_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_kernel_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_rmap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_protocol_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_remove_private_as_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_description_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_in_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_hello_interval_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_rip_packet_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_send_version_2_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_standard_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_prefix_longer_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_any_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_exact_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged10_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_filter_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_event_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_priority_addr_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_out_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_le_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_lsa_sub_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_hellointerval_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_damp_unset2_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged7_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_first_match_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_description_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbor_received_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &show_version_ospf6_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_topology_router_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_send_version_num_cmd_vtysh); - install_element (RMAP_NODE, &match_ecommunity_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_le_cmd_vtysh); - install_element (RIP_NODE, &no_rip_redistribute_type_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_priority_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_prefix_first_match_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_prefix_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_out_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_routes_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_authkey_cmd_vtysh); - install_element (RMAP_NODE, &no_set_atomic_aggregate_cmd_vtysh); - install_element (BGP_IPV6_NODE, &ipv6_bgp_network_route_map_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); - install_element (RMAP_NODE, &no_rmap_onmatch_next_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_soft_in_cmd_vtysh); - install_element (RMAP_NODE, &match_ipv6_address_prefix_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_prefix_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_received_routes_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_ism_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_instance_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community4_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_route_server_client_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_duration_day_month_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_ospf6_metric_val_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_name_all_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community4_cmd_vtysh); - install_element (OSPF_NODE, &area_range_advertise_cost_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_val_cmd_vtysh); - install_element (OSPF_NODE, &no_timers_spf_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community2_cmd_vtysh); - install_element (OSPF_NODE, &refresh_timer_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_keepalive_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_nexthop_self_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_route_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_interface_ifname_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_cmd_vtysh); - install_element (ENABLE_NODE, &debug_rip_packet_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ipv6_next_hop_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_bgp_cmd_vtysh); - install_element (OSPF_NODE, &no_network_area_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_cmd_vtysh); - install_element (OSPF_NODE, &no_area_range_advertise_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_extcommunity_list_arg_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_all_cmd_vtysh); - install_element (OSPF_NODE, &no_neighbor_cmd_vtysh); - install_element (CONFIG_NODE, &router_zebra_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_summary_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_prefix_list_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_route_map_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged1_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_extcommunity_list_cmd_vtysh); - install_element (RMAP_NODE, &no_match_interface_val_cmd_vtysh); - install_element (OSPF_NODE, &no_area_stub_no_summary_cmd_vtysh); - install_element (OSPF_NODE, &no_area_stub_cmd_vtysh); - install_element (OSPF_NODE, &area_import_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_tags_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); - install_element (BGP_NODE, &neighbor_allowas_in_cmd_vtysh); - install_element (OSPF6_NODE, &interface_area_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_update_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community4_exact_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community2_exact_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_dampening_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_view_prefix_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_cmd_vtysh); - install_element (ENABLE_NODE, &show_debugging_zebra_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_prefix_cmd_vtysh); - install_element (RIP_NODE, &rip_version_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_default_originate_rmap_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_cost_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_prefix_filter_cmd_vtysh); - install_element (BGP_NODE, &bgp_enforce_first_as_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_send_version_1_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community3_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_route_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_routes_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_summary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbor_routes_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_addr_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_cmd_vtysh); - install_element (RMAP_NODE, &no_set_community_val_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged8_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_receive_version_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); - install_element (RMAP_NODE, &no_set_weight_val_cmd_vtysh); - install_element (ENABLE_NODE, &debug_zebra_packet_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_route_map_cmd_vtysh); - install_element (BGP_NODE, &neighbor_maximum_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &ip_route_mask_distance_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (ENABLE_NODE, &debug_zebra_kernel_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_message_digest_key_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_filter_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community_list_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_cost_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_addr_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_nsm_sub_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_route_reflector_client_cmd_vtysh); - install_element (BGP_NODE, &neighbor_default_originate_rmap_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_connected_metric_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_any_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_prefix_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_remove_private_as_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_out_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_neighbor_received_routes_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_deadinterval_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_route_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_route_server_client_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_local_as_val2_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_prefix_advertisement_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_ge_le_cmd_vtysh); - install_element (BGP_NODE, &neighbor_send_community_type_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_allowas_in_cmd_vtysh); - install_element (ZEBRA_NODE, &no_rip_redistribute_rip_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_vpnv4_network_cmd_vtysh); - install_element (CONFIG_NODE, &config_table_cmd_vtysh); - install_element (BGP_NODE, &neighbor_description_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_cidr_only_cmd_vtysh); - install_element (RIP_NODE, &rip_distance_source_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_out_cmd_vtysh); - install_element (VIEW_NODE, &show_interface_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community4_exact_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_out_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard2_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_regexp_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_always_compare_med_cmd_vtysh); - install_element (ENABLE_NODE, &show_interface_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_metric_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_name_seq_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community3_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ipv6_nexthop_local_val_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_host_host_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community3_cmd_vtysh); - install_element (RMAP_NODE, &no_set_aggregator_as_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_prefix_list_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_external_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (BGP_NODE, &old_ipv6_aggregate_address_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_id_self_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); - install_element (CONFIG_NODE, &debug_zebra_packet_detail_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_received_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ripng_packet_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_detail_all_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_distribute_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_regexp_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ipv6_nexthop_local_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community3_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_cmd_vtysh); - install_element (RIPNG_NODE, &default_information_originate_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_month_day_month_day_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_longer_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community2_exact_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_activate_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_ism_cmd_vtysh); - install_element (OSPF_NODE, &no_neighbor_poll_interval_cmd_vtysh); - install_element (ENABLE_NODE, &show_debugging_bgp_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_cidr_only_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_description_val_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_protocols_rip_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_summary_cmd_vtysh); - install_element (OSPF_NODE, &ospf_rfc1583_flag_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_infinite_day_month_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ipv6_prefix_list_name_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_prefix_first_match_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_metric_type_cmd_vtysh); - install_element (BGP_NODE, &bgp_distance_source_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_lsa_sub_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_next_hop_prefix_list_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ripng_zebra_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_ge_le_cmd_vtysh); - install_element (BGP_NODE, &bgp_bestpath_compare_router_id_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_regexp_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged8_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_host_host_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_zebra_sub_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_ism_sub_cmd_vtysh); - install_element (OSPF_NODE, &no_area_range_advertise_cost_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_summary_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_neighbor_flap_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_any_any_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_type_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbor_routes_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged10_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_out_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_summary_only_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_name_expanded_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_reachable_time_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_name_cmd_vtysh); - install_element (RMAP_NODE, &set_ecommunity_soo_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_ospf6_routemap_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_damp_set2_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_bgp_routemap_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ecommunity_soo_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_all_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_summary_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_fsm_cmd_vtysh); - install_element (CONFIG_NODE, &bgp_multiple_instance_cmd_vtysh); - install_element (CONFIG_NODE, &no_router_bgp_view_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_seq_le_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_summary_cmd_vtysh); - install_element (RIP_NODE, &no_rip_default_metric_val_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_paths_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_community_list_arg_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_standard_host_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_cost_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_kernel_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_default_metric_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_filter_list_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_seq_le_ge_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_received_prefix_filter_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_addr_cmd_vtysh); - install_element (BGP_NODE, &neighbor_local_as_cmd_vtysh); - install_element (CONFIG_NODE, &dump_bgp_updates_interval_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community4_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community3_exact_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_scan_time_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_string2_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_metric_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_received_routes_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_args_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_tags_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_any_any_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_in_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_default_metric_val_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_name_expanded_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_send_community_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbors_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community4_exact_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged10_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_day_month_month_day_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_cidr_only_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_address_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_summary_cmd_vtysh); - install_element (BGP_NODE, &bgp_bestpath_med3_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_flap_route_map_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_route_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_activate_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_instance_ipv6_summary_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_day_month_day_month_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_topology_router_lsid_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_normal_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_packet_send_recv_detail_cmd_vtysh); - install_element (RMAP_NODE, &no_set_metric_type_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_ospf6_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_message_digest_key_addr_cmd_vtysh); - install_element (VIEW_NODE, &ipv6_bgp_neighbor_received_routes_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf6_all_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_remove_private_as_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community_all_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged1_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_cost_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_transmitdelay_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_summary_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_receive_version_2_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_nexthop_self_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_param3_cmd_vtysh); - install_element (OSPF_NODE, &area_export_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_rip_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_aggregate_address_as_set_cmd_vtysh); - install_element (CONFIG_NODE, &debug_zebra_kernel_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_duration_month_day_cmd_vtysh); - install_element (RIP_NODE, &no_rip_redistribute_type_metric_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &ip_community_list_standard2_cmd_vtysh); - install_element (CONFIG_NODE, &ip_route_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community3_exact_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_bestpath_med2_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_regexp_cmd_vtysh); - install_element (OSPF_NODE, &no_ospf_default_information_originate_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_addr_cmd_vtysh); - install_element (RMAP_NODE, &no_set_aggregator_as_val_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_seq_le_ge_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_address_cmd_vtysh); - install_element (RIPNG_NODE, &no_default_information_originate_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_out_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community_list_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_packet_all_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_route_pref_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_default_originate_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_prefix_list_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_address_secondary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_scan_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_bgp_keepalive_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_regexp_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged2_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_rip_packet_direct_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_filter_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_enforce_multihop_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_routemap_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_extended_mask_host_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (BGP_NODE, &bgp_bestpath_med_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_authkey_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_rip_zebra_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged8_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community3_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_database_type_id_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_in_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_route_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_statistics_cmd_vtysh); - install_element (RMAP_NODE, &set_ipv6_nexthop_global_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_received_routes_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_neighbor_routes_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_prefix_longer_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_zebra_sub_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_out_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_summary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_instance_ipv4_summary_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ripng_cmd_vtysh); - install_element (BGP_NODE, &bgp_damp_unset_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distribute_list_out_cmd_vtysh); - install_element (CONFIG_NODE, &no_dump_bgp_updates_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_standard_host_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_events_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community4_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_route_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_dead_interval_addr_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_access_list_remark_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_route_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged7_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_lsa_sub_cmd_vtysh); - install_element (INTERFACE_NODE, &no_rip_split_horizon_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_set_peer_group_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ipv6_prefix_list_name_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_route_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_set_peer_group_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_summary_only_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_host_mask_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_cmd_vtysh); - install_element (KEYCHAIN_NODE, &no_key_chain_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_info_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_event_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_community_all_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_authentication_mode_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_port_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_type_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_in_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_network_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_seq_le_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community3_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ripng_zebra_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_advertised_route_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_metric_type_routemap_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged3_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_enforce_first_as_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_database_type_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_prefix_list_summary_cmd_vtysh); - install_element (RIP_NODE, &no_rip_passive_interface_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_area_route_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &ip_route_distance_cmd_vtysh); - install_element (BGP_NODE, &old_ipv6_bgp_network_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_backdoor_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_bestpath_med_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_standard_cmd_vtysh); - install_element (ZEBRA_NODE, &no_redistribute_ospf6_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_keepalive_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_damp_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_dampening_address_cmd_vtysh); - install_element (OSPF_NODE, &no_area_filter_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_bestpath_aspath_ignore_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_external_in_prefix_filter_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_authentication_string_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_expanded_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbor_advertised_routes_cmd_vtysh); - install_element (VIEW_NODE, &show_debugging_ripng_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_natural_backdoor_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_seq_ge_le_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged2_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community_exact_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_infinite_month_day_cmd_vtysh); - install_element (RMAP_NODE, &no_set_originator_id_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_flap_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); - install_element (VIEW_NODE, &show_version_ospf6_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_remark_cmd_vtysh); - install_element (RMAP_NODE, &no_set_ipv6_nexthop_global_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_standard_nomask_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_passive_interface_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_bgp_neighbor_advertised_route_cmd_vtysh); - install_element (RIP_NODE, &rip_redistribute_type_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_zebra_cmd_vtysh); - install_element (RMAP_NODE, &no_match_metric_val_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &bgp_network_mask_route_map_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_type_metric_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_community4_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_interface_ifname_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_attr_info_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbor_routes_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_prefix_list_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged8_cmd_vtysh); - install_element (RIP_NODE, &rip_offset_list_ifname_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_default_ipv4_unicast_cmd_vtysh); - install_element (ENABLE_NODE, &debug_rip_events_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_arg_cmd_vtysh); - install_element (BGP_NODE, &neighbor_attr_unchanged6_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_route_map_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_dont_capability_negotiate_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community4_exact_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_static_routemap_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_exact_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &send_lifetime_infinite_month_day_cmd_vtysh); - install_element (BGP_NODE, &neighbor_advertise_interval_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_send_community_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &no_key_string_cmd_vtysh); - install_element (OSPF_NODE, &timers_spf_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_summary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_prefix_longer_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); - install_element (RMAP_NODE, &set_origin_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_network_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_inter_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ripng_zebra_cmd_vtysh); - install_element (BGP_NODE, &neighbor_timers_connect_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_next_hop_val_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_priority_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_nsm_sub_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_prefix_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_exact_cmd_vtysh); - install_element (RIP_NODE, &no_rip_redistribute_type_metric_cmd_vtysh); - install_element (INTERFACE_NODE, &ospf_priority_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_ospf6_metric_cmd_vtysh); - install_element (INTERFACE_NODE, &no_bandwidth_if_val_cmd_vtysh); - install_element (BGP_IPV4_NODE, &aggregate_address_as_set_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_cmd_vtysh); - install_element (CONFIG_NODE, &no_bgp_multiple_instance_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_send_community_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_peer_group_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_zebra_cmd_vtysh); - install_element (RMAP_NODE, &ospf6_routemap_no_set_forwarding_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_area_topology_router_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_summary_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_interface_cmd_vtysh); - install_element (RIP_NODE, &no_rip_route_cmd_vtysh); - install_element (BGP_NODE, &bgp_network_mask_route_map_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_prefix_longer_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_view_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_route_map_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_type_adv_router_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_seq_cmd_vtysh); - install_element (RMAP_NODE, &no_match_ip_next_hop_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ospf6_topology_router_lsid_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_routemap_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_connected_metric_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_hello_interval_addr_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community4_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_summary_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_forwarding_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged7_cmd_vtysh); - install_element (CONFIG_NODE, &no_dump_bgp_routes_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_access_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_ge_le_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_ism_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_instance_summary_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_community4_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_param1_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged6_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_metric_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_prefix_list_sequence_number_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_ge_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_static_metric_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community_cmd_vtysh); - install_element (BGP_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_cost_addr_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_default_originate_rmap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_regexp_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_prefix_list_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_summary_name_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_authentication_args_addr_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_network_mask_natural_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_rip_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_in_prefix_filter_cmd_vtysh); - install_element (BGP_NODE, &no_bgp_client_to_client_reflection_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_ripng_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_dead_interval_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_received_routes_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_weight_val_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_ospf_authentication_addr_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_rip_receive_version_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_prefix_filter_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_out_cmd_vtysh); - install_element (CONFIG_NODE, &access_list_standard_any_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_priority_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community3_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_set_peer_group_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_ospf6_neighborlist_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_neighbor_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_in_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_reachable_time_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_route_server_client_cmd_vtysh); - install_element (RMAP_NODE, &match_community_exact_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_list_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd_vtysh); - install_element (BGP_NODE, &neighbor_transparent_nexthop_cmd_vtysh); - install_element (BGP_NODE, &neighbor_peer_group_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_packet_all_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_peer_group_remote_as_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_seq_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged1_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_all_in_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_activate_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); - install_element (BGP_NODE, &neighbor_set_peer_group_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_as_set_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_mask_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_packet_all_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); - install_element (RIP_NODE, &no_rip_default_information_originate_cmd_vtysh); - install_element (CONFIG_NODE, &no_router_bgp_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_all_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_prefix_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_neighbors_peer_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_prefix_list_cmd_vtysh); - install_element (RIP_NODE, &rip_neighbor_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_extcommunity_list_arg_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbor_routes_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_regexp_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_ge_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); - install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_metric_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_args_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_ospf_database_type_id_adv_router_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbor_advertised_route_cmd_vtysh); - install_element (RMAP_NODE, &match_ip_address_prefix_list_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf6_damp_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_route_ifname_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_route_pref_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_database_cmd_vtysh); - install_element (ENABLE_NODE, &show_zebra_client_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ripng_events_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_address_cmd_vtysh); - install_element (RIPNG_NODE, &ripng_redistribute_ospf6_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_filter_list_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); - install_element (RMAP_NODE, &no_set_community_delete_val_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_route_ifname_pref_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community_list_exact_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_detail_cmd_vtysh); - install_element (OSPF6_NODE, &router_id_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ripng_packet_direct_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_out_cmd_vtysh); - install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_external_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ipv6_nd_other_config_flag_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_aggregate_address_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_name_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community_all_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_route_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_bgp_metric_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_out_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_weight_cmd_vtysh); - install_element (RIP_NODE, &rip_passive_interface_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_filter_list_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_prefix_longer_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_cmd_vtysh); - install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_detail_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_route_map_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_nexthop_self_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_community_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_cidr_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbors_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_summary_only_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_prefix_filter_cmd_vtysh); - install_element (CONFIG_NODE, &ipv6_access_list_any_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &vpnv4_network_cmd_vtysh); - install_element (RIP_NODE, &no_rip_network_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ripng_packet_direct_cmd_vtysh); - install_element (OSPF_NODE, &neighbor_poll_interval_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_standard_any_cmd_vtysh); - install_element (BGP_NODE, &bgp_bestpath_aspath_ignore_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_route_addr_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_advertise_interval_val_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbor_advertised_routes_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_prefix_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_always_type_routemap_cmd_vtysh); - install_element (BGP_NODE, &bgp_router_id_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_activate_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_route_map_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_exact_cmd_vtysh); - install_element (BGP_IPV4_NODE, &bgp_network_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_community_info_cmd_vtysh); - install_element (ZEBRA_NODE, &rip_redistribute_rip_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_instance_summary_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_community_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_cmd_vtysh); - install_element (BGP_NODE, &neighbor_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_out_cmd_vtysh); - install_element (RMAP_NODE, &match_origin_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_other_config_flag_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_cmd_vtysh); - install_element (RIP_NODE, &no_rip_distance_source_access_list_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_out_cmd_vtysh); - install_element (OSPF_NODE, &passive_interface_cmd_vtysh); - install_element (OSPF_NODE, &ospf_redistribute_source_type_metric_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged7_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_distribute_list_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_bgp_routemap_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_mbgp_community4_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_in_cmd_vtysh); - install_element (OSPF6_NODE, &interface_area_plist_passive_cmd_vtysh); - install_element (RMAP_NODE, &no_set_community_delete_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community_list_exact_cmd_vtysh); - install_element (RIP_NODE, &no_rip_version_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_filter_list_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_md5_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_access_list_cmd_vtysh); - install_element (RMAP_NODE, &set_ecommunity_rt_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_longer_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_cmd_vtysh); - install_element (CONFIG_NODE, &ip_extcommunity_list_expanded_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_default_originate_cmd_vtysh); - install_element (INTERFACE_NODE, &ip_ospf_dead_interval_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community2_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_cmd_vtysh); - install_element (INTERFACE_NODE, &no_bandwidth_if_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbor_advertised_routes_cmd_vtysh); - install_element (RMAP_NODE, &no_set_local_pref_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community2_exact_cmd_vtysh); - install_element (CONFIG_NODE, &ip_prefix_list_seq_ge_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community2_exact_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ospf_network_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_community_exact_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &no_neighbor_distribute_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_prefix_filter_cmd_vtysh); - install_element (RIPNG_NODE, &no_ripng_redistribute_connected_metric_val_cmd_vtysh); - install_element (CONFIG_NODE, &debug_ospf_nsm_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); - install_element (RIP_NODE, &no_rip_offset_list_cmd_vtysh); - install_element (OSPF_NODE, &no_area_range_substitute_cmd_vtysh); - install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbor_received_routes_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &no_neighbor_allowas_in_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_prefix_list_cmd_vtysh); - install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_inter_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_community3_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_timers_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_peer_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_addr_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_prefix_list_summary_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_out_cmd_vtysh); - install_element (ENABLE_NODE, &debug_ospf_lsa_sub_cmd_vtysh); - install_element (CONFIG_NODE, &no_ip_prefix_list_seq_cmd_vtysh); - install_element (BGP_NODE, &neighbor_override_capability_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbor_routes_cmd_vtysh); - install_element (ENABLE_NODE, &undebug_bgp_events_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_as_set_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_send_community_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_exact_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_prefix_longer_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_cmd_vtysh); - install_element (OSPF_NODE, &network_area_cmd_vtysh); - install_element (ENABLE_NODE, &ipv6_mbgp_neighbor_received_routes_cmd_vtysh); - install_element (BGP_NODE, &neighbor_version_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_protocol_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_ebgp_multihop_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &no_key_chain_cmd_vtysh); - install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_day_month_month_day_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community4_exact_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); - install_element (BGP_IPV4_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_route_cmd_vtysh); - install_element (RMAP_NODE, &no_set_vpnv4_nexthop_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_dampened_paths_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_in_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_community2_exact_cmd_vtysh); - install_element (OSPF_NODE, &ospf_default_information_originate_type_metric_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_bgp_community_exact_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_capability_dynamic_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_regexp_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_md5_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_authtype_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_ospf_neighbor_id_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_extended_mask_any_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_prefix_list_prefix_longer_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_list_cmd_vtysh); - install_element (BGP_NODE, &neighbor_capability_route_refresh_cmd_vtysh); - install_element (OSPF_NODE, &no_area_vlink_authtype_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_rip_packet_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_peer_cmd_vtysh); - install_element (BGP_NODE, &no_neighbor_filter_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_out_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_bgp_regexp_cmd_vtysh); - install_element (OSPF6_NODE, &ospf6_area_range_cmd_vtysh); - install_element (OSPF6_NODE, &ospf6_redistribute_routemap_cmd_vtysh); - install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_advertised_route_cmd_vtysh); - install_element (RIP_NODE, &rip_distance_cmd_vtysh); - install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd_vtysh); - install_element (ENABLE_NODE, &clear_bgp_as_out_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_out_cmd_vtysh); - install_element (CONFIG_NODE, &no_access_list_standard_nomask_cmd_vtysh); - install_element (ENABLE_NODE, &no_debug_bgp_fsm_cmd_vtysh); - install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); - install_element (VIEW_NODE, &show_bgp_ipv6_community_all_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_in_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_nd_managed_config_flag_cmd_vtysh); - install_element (INTERFACE_NODE, &ipv6_ospf6_advertise_prefix_list_cmd_vtysh); - install_element (RMAP_NODE, &no_match_metric_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_community_list_arg_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_flap_route_map_cmd_vtysh); - install_element (CONFIG_NODE, &no_key_chain_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_peer_cmd_vtysh); - install_element (CONFIG_NODE, &no_ipv6_access_list_remark_arg_cmd_vtysh); - install_element (BGP_IPV6_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); - install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_cmd_vtysh); - install_element (CONFIG_NODE, &debug_bgp_events_cmd_vtysh); - install_element (BGP_NODE, &neighbor_distribute_list_cmd_vtysh); - install_element (ENABLE_NODE, &clear_ip_bgp_dampening_cmd_vtysh); - install_element (RMAP_NODE, &set_ip_nexthop_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_route_supernets_cmd_vtysh); - install_element (ENABLE_NODE, &debug_bgp_events_cmd_vtysh); - install_element (RMAP_NODE, &set_originator_id_cmd_vtysh); - install_element (RMAP_NODE, &set_local_pref_cmd_vtysh); - install_element (BGP_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); - install_element (ENABLE_NODE, &debug_rip_packet_direct_cmd_vtysh); - install_element (OSPF_NODE, &neighbor_poll_interval_priority_cmd_vtysh); - install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_rmap_cmd_vtysh); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_cidr_only_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbors_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_route_ospf6_external_cmd_vtysh); - install_element (ENABLE_NODE, &show_ip_extcommunity_list_cmd_vtysh); - install_element (ENABLE_NODE, &show_ipv6_mbgp_prefix_cmd_vtysh); - install_element (RMAP_NODE, &set_aspath_prepend_cmd_vtysh); - install_element (VIEW_NODE, &show_ipv6_route_prefix_cmd_vtysh); - install_element (BGP_IPV4_NODE, &neighbor_send_community_cmd_vtysh); - install_element (OSPF_NODE, &area_vlink_param2_cmd_vtysh); -} diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c index 91193371..a307d5cc 100644 --- a/vtysh/vtysh_config.c +++ b/vtysh/vtysh_config.c @@ -170,7 +170,7 @@ vtysh_config_parse_line (char *line) config = config_get (BGP_IPV4M_NODE, line); else if (strncmp (line, " address-family ipv6", strlen (" address-family ipv6")) == 0) config = config_get (BGP_IPV6_NODE, line); - else if (config->index == RMAP_NODE) + else if (config->index == RMAP_NODE || config->index == INTERFACE_NODE ) config_add_line_uniq (config->line, line); else config_add_line (config->line, line); diff --git a/vtysh/vtysh_user.c b/vtysh/vtysh_user.c index b84da2eb..ecbe0f4c 100644 --- a/vtysh/vtysh_user.c +++ b/vtysh/vtysh_user.c @@ -25,7 +25,12 @@ #ifdef USE_PAM #include <security/pam_appl.h> +#ifdef HAVE_PAM_MISC_H #include <security/pam_misc.h> +#endif +#ifdef HAVE_OPENPAM_H +#include <security/openpam.h> +#endif #endif /* USE_PAM */ #include "memory.h" @@ -35,7 +40,7 @@ #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, + PAM_CONV_FUNC, NULL }; diff --git a/zebra/.cvsignore b/zebra/.cvsignore index 95401bfa..f5169639 100644 --- a/zebra/.cvsignore +++ b/zebra/.cvsignore @@ -1,4 +1,5 @@ Makefile +Makefile.in *.o zebra zebra.conf diff --git a/zebra/Makefile.am b/zebra/Makefile.am index ce564672..6214767d 100644 --- a/zebra/Makefile.am +++ b/zebra/Makefile.am @@ -13,10 +13,9 @@ rt_method = @RT_METHOD@ rtread_method = @RTREAD_METHOD@ kernel_method = @KERNEL_METHOD@ other_method = @OTHER_METHOD@ -libcap = @LIBCAP@ otherobj = $(ipforward) $(if_method) $(if_proc) $(rt_method) \ - $(rtread_method) $(kernel_method) $(other_method) $(libcap) + $(rtread_method) $(kernel_method) $(other_method) sbin_PROGRAMS = zebra @@ -26,7 +25,7 @@ zebra_SOURCES = \ noinst_HEADERS = \ connected.h ioctl.h rib.h rt.h zserv.h redistribute.h debug.h rtadv.h \ - interface.h ipforward.h + interface.h ipforward.h irdp.h zebra_LDADD = ../lib/libzebra.a $(otherobj) $(LIB_IPV6) @@ -39,7 +38,7 @@ EXTRA_DIST = $(sysconf_DATA) if_ioctl.c if_netlink.c if_proc.c if_sysctl.c \ ipforward_solaris.c ipforward_sysctl.c rt_ioctl.c rt_netlink.c \ rt_socket.c rtread_netlink.c rtread_proc.c rtread_sysctl.c \ rtread_getmsg.c kernel_socket.c kernel_netlink.c mtu_kvm.c \ - GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB + GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB irdp.c #client : client_main.o ../lib/libzebra.a # $(CC) -g -o client client_main.o ../lib/libzebra.a $(LIBS) $(LIB_IPV6) diff --git a/zebra/Makefile.in b/zebra/Makefile.in deleted file mode 100644 index 5383bcb5..00000000 --- a/zebra/Makefile.in +++ /dev/null @@ -1,423 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AR = @AR@ -AWK = @AWK@ -BGPD = @BGPD@ -CC = @CC@ -CPP = @CPP@ -CURSES = @CURSES@ -DEPDIR = @DEPDIR@ -IF_METHOD = @IF_METHOD@ -IF_PROC = @IF_PROC@ - -INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPFORWARD = @IPFORWARD@ -KERNEL_METHOD = @KERNEL_METHOD@ -LIBPAM = @LIBPAM@ - -LIB_IPV6 = @LIB_IPV6@ -LIB_REGEX = @LIB_REGEX@ -MULTIPATH_NUM = @MULTIPATH_NUM@ -OSPF6D = @OSPF6D@ -OSPFD = @OSPFD@ -OTHER_METHOD = @OTHER_METHOD@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -RIPD = @RIPD@ -RIPNGD = @RIPNGD@ -RTREAD_METHOD = @RTREAD_METHOD@ -RT_METHOD = @RT_METHOD@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VTYSH = @VTYSH@ -ZEBRA = @ZEBRA@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ -DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -DMULTIPATH_NUM=@MULTIPATH_NUM@ -INSTALL_SDATA = @INSTALL@ -m 600 - -ipforward = @IPFORWARD@ -if_method = @IF_METHOD@ -if_proc = @IF_PROC@ -rt_method = @RT_METHOD@ -rtread_method = @RTREAD_METHOD@ -kernel_method = @KERNEL_METHOD@ -other_method = @OTHER_METHOD@ - -otherobj = $(ipforward) $(if_method) $(if_proc) $(rt_method) \ - $(rtread_method) $(kernel_method) $(other_method) - - -sbin_PROGRAMS = zebra - -zebra_SOURCES = \ - zserv.c main.c interface.c connected.c ioctl.c zebra_rib.c \ - redistribute.c debug.c rtadv.c zebra_snmp.c zebra_vty.c - - -noinst_HEADERS = \ - connected.h ioctl.h rib.h rt.h zserv.h redistribute.h debug.h rtadv.h \ - interface.h ipforward.h - - -zebra_LDADD = ../lib/libzebra.a $(otherobj) $(LIB_IPV6) - -zebra_DEPENDENCIES = $(otherobj) - -sysconf_DATA = zebra.conf.sample - -EXTRA_DIST = $(sysconf_DATA) if_ioctl.c if_netlink.c if_proc.c if_sysctl.c \ - ipforward_aix.c ipforward_ews.c ipforward_proc.c \ - ipforward_solaris.c ipforward_sysctl.c rt_ioctl.c rt_netlink.c \ - rt_socket.c rtread_netlink.c rtread_proc.c rtread_sysctl.c \ - rtread_getmsg.c kernel_socket.c kernel_netlink.c mtu_kvm.c \ - GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB - -subdir = zebra -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -sbin_PROGRAMS = zebra$(EXEEXT) -PROGRAMS = $(sbin_PROGRAMS) - -am_zebra_OBJECTS = zserv.$(OBJEXT) main.$(OBJEXT) interface.$(OBJEXT) \ - connected.$(OBJEXT) ioctl.$(OBJEXT) zebra_rib.$(OBJEXT) \ - redistribute.$(OBJEXT) debug.$(OBJEXT) rtadv.$(OBJEXT) \ - zebra_snmp.$(OBJEXT) zebra_vty.$(OBJEXT) -zebra_OBJECTS = $(am_zebra_OBJECTS) -zebra_LDFLAGS = -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/connected.Po ./$(DEPDIR)/debug.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/interface.Po ./$(DEPDIR)/ioctl.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/main.Po ./$(DEPDIR)/redistribute.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/rtadv.Po ./$(DEPDIR)/zebra_rib.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/zebra_snmp.Po ./$(DEPDIR)/zebra_vty.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/zserv.Po -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -DIST_SOURCES = $(zebra_SOURCES) -DATA = $(sysconf_DATA) - -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = $(noinst_HEADERS) ChangeLog Makefile.am Makefile.in -SOURCES = $(zebra_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign zebra/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ - else :; fi; \ - done - -uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ - rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - -clean-sbinPROGRAMS: - -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -zebra$(EXEEXT): $(zebra_OBJECTS) $(zebra_DEPENDENCIES) - @rm -f zebra$(EXEEXT) - $(LINK) $(zebra_LDFLAGS) $(zebra_OBJECTS) $(zebra_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connected.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redistribute.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtadv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_rib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_snmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_vty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zserv.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.c.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< - -.c.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `cygpath -w $<` -CCDEPMODE = @CCDEPMODE@ -uninstall-info-am: -sysconfDATA_INSTALL = $(INSTALL_DATA) - -uninstall-sysconfDATA: - @$(NORMAL_UNINSTALL) - @list='$(sysconf_DATA)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \ - rm -f $(DESTDIR)$(sysconfdir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(sysconfdir) - -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-sbinPROGRAMS install-sysconfDATA - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-sbinPROGRAMS distclean distclean-compile distclean-depend \ - distclean-generic distclean-tags distdir dvi dvi-am info \ - info-am install install-am install-data install-data-am \ - install-exec install-exec-am install-info install-info-am \ - install-man install-sbinPROGRAMS install-strip \ - install-sysconfDATA installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic tags uninstall \ - uninstall-am uninstall-info-am uninstall-sbinPROGRAMS \ - uninstall-sysconfDATA - - -#client : client_main.o ../lib/libzebra.a -# $(CC) -g -o client client_main.o ../lib/libzebra.a $(LIBS) $(LIB_IPV6) - -install-sysconfDATA: $(sysconf_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - @list='$(sysconf_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \ - $(INSTALL_SDATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \ - fi; fi; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c index 46f53011..c9797996 100644 --- a/zebra/if_ioctl.c +++ b/zebra/if_ioctl.c @@ -130,14 +130,11 @@ interface_list_ioctl () int if_get_index (struct interface *ifp) { - static int if_fake_index = 1; - -#ifdef HAVE_BROKEN_ALIASES - /* Linux 2.2.X does not provide individual interface index for aliases. */ - ifp->ifindex = if_fake_index++; - return ifp->ifindex; -#else -#ifdef SIOCGIFINDEX +#if defined(HAVE_IF_NAMETOINDEX) + /* Modern systems should have if_nametoindex(3). */ + ifp->ifindex = if_nametoindex(ifp->name); +#elif defined(SIOCGIFINDEX) && !defined(HAVE_BROKEN_ALIASES) + /* Fall-back for older linuxes. */ int ret; struct ifreq ifreq; @@ -157,13 +154,20 @@ if_get_index (struct interface *ifp) #else ifp->ifindex = ifreq.ifr_index; #endif - return ifp->ifindex; #else +/* Linux 2.2.X does not provide individual interface index + for aliases and we know it. For others issue a warning. */ +#if !defined(HAVE_BROKEN_ALIASES) +#warning "Using if_fake_index. You may want to add appropriate" +#warning "mapping from ifname to ifindex for your system..." +#endif + /* This branch probably won't provide usable results, but anyway... */ + static int if_fake_index = 1; ifp->ifindex = if_fake_index++; +#endif + return ifp->ifindex; -#endif /* SIOCGIFINDEX */ -#endif /* HAVE_BROKEN_ALIASES */ } #ifdef SIOCGIFHWADDR @@ -287,6 +291,15 @@ if_getaddrs () } } +#if defined(KAME) + if (IN6_IS_ADDR_LINKLOCAL(&addr->sin6_addr)) + { + addr->sin6_scope_id = + ntohs(*(u_int16_t *)&addr->sin6_addr.s6_addr[2]); + addr->sin6_addr.s6_addr[2] = addr->sin6_addr.s6_addr[3] = 0; + } +#endif + connected_add_ipv6 (ifp, &addr->sin6_addr, prefixlen, dest_pnt); } #endif /* HAVE_IPV6 */ diff --git a/zebra/interface.c b/zebra/interface.c index 5629ebb3..f2374316 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -147,7 +147,7 @@ if_addr_wakeup (struct interface *ifp) zebra_interface_address_add_update (ifp, ifc); - if (if_is_up(ifp)) + if (if_is_operative(ifp)) connected_up_ipv4 (ifp, ifc); } #ifdef HAVE_IPV6 @@ -170,7 +170,7 @@ if_addr_wakeup (struct interface *ifp) zebra_interface_address_add_update (ifp, ifc); - if (if_is_up(ifp)) + if (if_is_operative(ifp)) connected_up_ipv6 (ifp, ifc); } #endif /* HAVE_IPV6 */ @@ -182,6 +182,14 @@ if_addr_wakeup (struct interface *ifp) void if_add_update (struct interface *ifp) { + struct zebra_if *if_data; + + if_data = ifp->info; + if (if_data->multicast == IF_ZEBRA_MULTICAST_ON) + if_set_flags (ifp, IFF_MULTICAST); + else if (if_data->multicast == IF_ZEBRA_MULTICAST_OFF) + if_unset_flags (ifp, IFF_MULTICAST); + zebra_interface_add_update (ifp); if (! CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) @@ -326,16 +334,16 @@ if_down (struct interface *ifp) void if_refresh (struct interface *ifp) { - if (if_is_up (ifp)) + if (if_is_operative (ifp)) { if_get_flags (ifp); - if (! if_is_up (ifp)) + if (! if_is_operative (ifp)) if_down (ifp); } else { if_get_flags (ifp); - if (if_is_up (ifp)) + if (if_is_operative (ifp)) if_up (ifp); } } @@ -471,8 +479,22 @@ if_dump_vty (struct vty *vty, struct interface *ifp) struct connected *connected; listnode node; - vty_out (vty, "Interface %s%s", ifp->name, - VTY_NEWLINE); + vty_out (vty, "Interface %s is ", ifp->name); + if (if_is_up(ifp)) { + vty_out (vty, "up, line protocol "); + + if (CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION)) { + if (if_is_running(ifp)) + vty_out (vty, "is up%s", VTY_NEWLINE); + else + vty_out (vty, "is down%s", VTY_NEWLINE); + } else { + vty_out (vty, "detection is disabled%s", VTY_NEWLINE); + } + } else { + vty_out (vty, "down%s", VTY_NEWLINE); + } + if (ifp->desc) vty_out (vty, " Description: %s%s", ifp->desc, VTY_NEWLINE); @@ -652,36 +674,6 @@ DEFUN_NOSH (zebra_interface, return ret; } -DEFUN (no_zebra_interface, - no_zebra_interface_cmd, - "no interface IFNAME", - "Delete a pseudo interface's configuration\n" - "Interface's name\n") -{ - struct interface *ifp; - - ifp = if_lookup_by_name(argv[0]); - - if (ifp == NULL) - { - vty_out (vty, "Inteface %s does not exist%s", - argv[0], - VTY_NEWLINE); - return CMD_WARNING; - } - - if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) - { - vty_out(vty, "Only inactive interfaces can be deleted%s", VTY_NEWLINE); - return CMD_WARNING; - } - - /* Delete interface */ - if_delete(ifp); - - return CMD_SUCCESS; -} - struct cmd_node interface_node = { INTERFACE_NODE, @@ -739,16 +731,19 @@ DEFUN (multicast, struct zebra_if *if_data; ifp = (struct interface *) vty->index; - ret = if_set_flags (ifp, IFF_MULTICAST); - if (ret < 0) + if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) { - vty_out (vty, "Can't set multicast flag%s", VTY_NEWLINE); - return CMD_WARNING; + ret = if_set_flags (ifp, IFF_MULTICAST); + if (ret < 0) + { + vty_out (vty, "Can't set multicast flag%s", VTY_NEWLINE); + return CMD_WARNING; + } + if_refresh (ifp); } - if_refresh (ifp); if_data = ifp->info; if_data->multicast = IF_ZEBRA_MULTICAST_ON; - + return CMD_SUCCESS; } @@ -763,19 +758,65 @@ DEFUN (no_multicast, struct zebra_if *if_data; ifp = (struct interface *) vty->index; - ret = if_unset_flags (ifp, IFF_MULTICAST); - if (ret < 0) + if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) { - vty_out (vty, "Can't unset multicast flag%s", VTY_NEWLINE); - return CMD_WARNING; + ret = if_unset_flags (ifp, IFF_MULTICAST); + if (ret < 0) + { + vty_out (vty, "Can't unset multicast flag%s", VTY_NEWLINE); + return CMD_WARNING; + } + if_refresh (ifp); } - if_refresh (ifp); if_data = ifp->info; if_data->multicast = IF_ZEBRA_MULTICAST_OFF; return CMD_SUCCESS; } +DEFUN (linkdetect, + linkdetect_cmd, + "link-detect", + "Enable link detection on interface\n") +{ + struct interface *ifp; + int if_was_operative; + + ifp = (struct interface *) vty->index; + if_was_operative = if_is_operative(ifp); + SET_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION); + + /* When linkdetection is enabled, if might come down */ + if (!if_is_operative(ifp) && if_was_operative) if_down(ifp); + + /* FIXME: Will defer status change forwarding if interface + does not come down! */ + + return CMD_SUCCESS; +} + + +DEFUN (no_linkdetect, + no_linkdetect_cmd, + "no link-detect", + NO_STR + "Disable link detection on interface\n") +{ + struct interface *ifp; + int if_was_operative; + + ifp = (struct interface *) vty->index; + if_was_operative = if_is_operative(ifp); + UNSET_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION); + + /* Interface may come up after disabling link detection */ + if (if_is_operative(ifp) && !if_was_operative) if_up(ifp); + + /* FIXME: see linkdetect_cmd */ + + return CMD_SUCCESS; +} + DEFUN (shutdown_if, shutdown_if_cmd, "shutdown", @@ -845,7 +886,7 @@ DEFUN (bandwidth_if, ifp->bandwidth = bandwidth; /* force protocols to recalculate routes due to cost change */ - if (if_is_up (ifp)) + if (if_is_operative (ifp)) zebra_interface_up_update (ifp); return CMD_SUCCESS; @@ -864,7 +905,7 @@ DEFUN (no_bandwidth_if, ifp->bandwidth = 0; /* force protocols to recalculate routes due to cost change */ - if (if_is_up (ifp)) + if (if_is_operative (ifp)) zebra_interface_up_update (ifp); return CMD_SUCCESS; @@ -957,7 +998,7 @@ ip_address_install (struct vty *vty, struct interface *ifp, char *addr_str, zebra_interface_address_add_update (ifp, ifc); /* If interface is up register connected route. */ - if (if_is_up(ifp)) + if (if_is_operative(ifp)) connected_up_ipv4 (ifp, ifc); } @@ -1165,7 +1206,7 @@ ipv6_address_install (struct vty *vty, struct interface *ifp, char *addr_str, zebra_interface_address_add_update (ifp, ifc); /* If interface is up register connected route. */ - if (if_is_up(ifp)) + if (if_is_operative(ifp)) connected_up_ipv6 (ifp, ifc); } @@ -1301,6 +1342,9 @@ if_config_write (struct vty *vty) if (ifp->bandwidth != 0) vty_out(vty, " bandwidth %u%s", ifp->bandwidth, VTY_NEWLINE); + if (CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION)) + vty_out(vty, " link-detect%s", VTY_NEWLINE); + for (addrnode = listhead (ifp->connected); addrnode; nextnode (addrnode)) { ifc = getdata (addrnode); @@ -1357,12 +1401,14 @@ zebra_if_init () install_element (VIEW_NODE, &show_interface_cmd); install_element (ENABLE_NODE, &show_interface_cmd); install_element (CONFIG_NODE, &zebra_interface_cmd); - install_element (CONFIG_NODE, &no_zebra_interface_cmd); + install_element (CONFIG_NODE, &no_interface_cmd); install_default (INTERFACE_NODE); install_element (INTERFACE_NODE, &interface_desc_cmd); install_element (INTERFACE_NODE, &no_interface_desc_cmd); install_element (INTERFACE_NODE, &multicast_cmd); install_element (INTERFACE_NODE, &no_multicast_cmd); + install_element (INTERFACE_NODE, &linkdetect_cmd); + install_element (INTERFACE_NODE, &no_linkdetect_cmd); install_element (INTERFACE_NODE, &shutdown_if_cmd); install_element (INTERFACE_NODE, &no_shutdown_if_cmd); install_element (INTERFACE_NODE, &bandwidth_if_cmd); diff --git a/zebra/ioctl.c b/zebra/ioctl.c index f8e7f22b..3e5d1d2f 100644 --- a/zebra/ioctl.c +++ b/zebra/ioctl.c @@ -27,13 +27,10 @@ #include "prefix.h" #include "ioctl.h" #include "log.h" -#include "privs.h" #include "zebra/rib.h" #include "zebra/rt.h" -extern struct zebra_privs_t zserv_privs; - /* clear and set interface name string */ void ifreq_set_name (struct ifreq *ifreq, struct interface *ifp) @@ -49,19 +46,14 @@ if_ioctl (u_long request, caddr_t buffer) int ret = 0; int err = 0; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); sock = socket (AF_INET, SOCK_DGRAM, 0); if (sock < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); perror ("socket"); exit (1); } + ret = ioctl (sock, request, buffer); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); if (ret < 0) { err = errno; @@ -84,21 +76,14 @@ if_ioctl_ipv6 (u_long request, caddr_t buffer) int ret = 0; int err = 0; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); sock = socket (AF_INET6, SOCK_DGRAM, 0); if (sock < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); perror ("socket"); exit (1); } ret = ioctl (sock, request, buffer); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - if (ret < 0) { err = errno; diff --git a/zebra/ipforward_proc.c b/zebra/ipforward_proc.c index a31ec84b..eb8cef01 100644 --- a/zebra/ipforward_proc.c +++ b/zebra/ipforward_proc.c @@ -22,11 +22,6 @@ #include <zebra.h> -#include "log.h" -#include "privs.h" - -extern struct zebra_privs_t zserv_privs; - char proc_net_snmp[] = "/proc/net/snmp"; static void @@ -73,15 +68,9 @@ int ipforward_on () { FILE *fp; - - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog_err ("Can't raise privileges, %s", strerror (errno) ); fp = fopen (proc_ipv4_forwarding, "w"); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog_err ("Can't lower privileges, %s", strerror (errno)); - + if (fp == NULL) return -1; @@ -97,14 +86,7 @@ ipforward_off () { FILE *fp; - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog_err ("Can't raise privileges, %s", strerror (errno)); - fp = fopen (proc_ipv4_forwarding, "w"); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog_err ("Can't lower privileges, %s", strerror (errno)); - if (fp == NULL) return -1; @@ -142,13 +124,7 @@ ipforward_ipv6_on () { FILE *fp; - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog_err ("Can't raise privileges, %s", strerror (errno)); - fp = fopen (proc_ipv6_forwarding, "w"); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog_err ("Can't lower privileges, %s", strerror (errno)); if (fp == NULL) return -1; @@ -165,13 +141,7 @@ ipforward_ipv6_off () { FILE *fp; - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog_err ("Can't raise privileges, %s", strerror (errno)); - fp = fopen (proc_ipv6_forwarding, "w"); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog_err ("Can't lower privileges, %s", strerror (errno)); if (fp == NULL) return -1; diff --git a/zebra/ipforward_solaris.c b/zebra/ipforward_solaris.c index 27a3afde..63d1110c 100644 --- a/zebra/ipforward_solaris.c +++ b/zebra/ipforward_solaris.c @@ -22,7 +22,6 @@ #include <zebra.h> #include "log.h" -#include "prefix.h" /* ** Solaris should define IP_DEV_NAME in <inet/ip.h>, but we'll save @@ -34,9 +33,6 @@ #define IP_DEV_NAME "/dev/ip" #endif /* - -extern struct zebra_privs_t zserv_privs; - ** This is a limited ndd style function that operates one integer ** value only. Errors return -1. ND_SET commands return 0 on ** success. ND_GET commands return the value on success (which could @@ -44,7 +40,6 @@ extern struct zebra_privs_t zserv_privs; ** name of the parameter being referenced. */ - static int solaris_nd(const int cmd, const char* parameter, const int value) { @@ -72,43 +67,26 @@ solaris_nd(const int cmd, const char* parameter, const int value) strioctl.ic_timout = 0; strioctl.ic_len = ND_BUFFER_SIZE; strioctl.ic_dp = nd_buf; - - if ( zserv_privs.change (ZPRIVS_RAISE) ) - zlog_err ("solaris_nd: Can't raise privileges"); - if ((fd = open (device, O_RDWR)) < 0) - { - zlog_warn("failed to open device %s - %s", device, strerror(errno)); - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("solaris_nd: Can't lower privileges"); - return -1; - } - if (ioctl (fd, I_STR, &strioctl) < 0) - { - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("solaris_nd: Can't lower privileges"); - close (fd); - zlog_warn("ioctl I_STR failed on device %s - %s", device,strerror(errno)); - return -1; - } + if ((fd = open (device, O_RDWR)) < 0) { + zlog_warn("failed to open device %s - %s", device, strerror(errno)); + return -1; + } + if (ioctl (fd, I_STR, &strioctl) < 0) { + close (fd); + zlog_warn("ioctl I_STR failed on device %s - %s", device,strerror(errno)); + return -1; + } close(fd); - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("solaris_nd: Can't lower privileges"); - - if (cmd == ND_GET) - { - errno = 0; - retval = atoi(nd_buf); - if (errno) - { - zlog_warn("failed to convert returned value to integer - %s", - strerror(errno)); - retval = -1; - } - } - else - { - retval = 0; + if (cmd == ND_GET) { + errno = 0; + retval = atoi(nd_buf); + if (errno) { + zlog_warn("failed to convert returned value to integer - %s",strerror(errno)); + retval = -1; } + } else { + retval = 0; + } return retval; } diff --git a/zebra/ipforward_sysctl.c b/zebra/ipforward_sysctl.c index 53b6c6f0..828eb865 100644 --- a/zebra/ipforward_sysctl.c +++ b/zebra/ipforward_sysctl.c @@ -20,7 +20,6 @@ */ #include <zebra.h> -#include "privs.h" #ifdef NRL #include <netinet6/in6.h> @@ -30,8 +29,6 @@ #define MIB_SIZ 4 -extern struct zebra_privs_t zserv_privs; - /* IPv4 forwarding control MIB. */ int mib[MIB_SIZ] = { @@ -63,17 +60,11 @@ ipforward_on () int ipforwarding = 1; len = sizeof ipforwarding; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - if (sysctl (mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) + if (sysctl (mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog_warn ("Can't set ipforwarding on"); return -1; } - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); return ipforwarding; } @@ -84,17 +75,11 @@ ipforward_off () int ipforwarding = 0; len = sizeof ipforwarding; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - if (sysctl (mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) + if (sysctl (mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog_warn ("Can't set ipforwarding on"); return -1; } - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); return ipforwarding; } @@ -121,17 +106,11 @@ ipforward_ipv6 () int ip6forwarding = 0; len = sizeof ip6forwarding; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - if (sysctl (mib_ipv6, MIB_SIZ, &ip6forwarding, &len, 0, 0) < 0) + if (sysctl (mib_ipv6, MIB_SIZ, &ip6forwarding, &len, 0, 0) < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog_warn ("can't get ip6forwarding value"); return -1; } - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); return ip6forwarding; } @@ -142,17 +121,11 @@ ipforward_ipv6_on () int ip6forwarding = 1; len = sizeof ip6forwarding; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - if (sysctl (mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len) < 0) + if (sysctl (mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len) < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog_warn ("can't get ip6forwarding value"); return -1; } - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); return ip6forwarding; } @@ -163,17 +136,11 @@ ipforward_ipv6_off () int ip6forwarding = 0; len = sizeof ip6forwarding; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - if (sysctl (mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len) < 0) + if (sysctl (mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len) < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog_warn ("can't get ip6forwarding value"); return -1; } - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); return ip6forwarding; } #endif /* HAVE_IPV6 */ diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 30e0fb1d..17893a87 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -31,14 +31,11 @@ #include "str.h" #include "table.h" #include "rib.h" -#include "privs.h" #include "zebra/interface.h" #include "zebra/zserv.h" #include "zebra/debug.h" -extern struct zebra_privs_t zserv_privs; - /* Socket length roundup function. */ #define ROUNDUP(a) \ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) @@ -801,23 +798,16 @@ kernel_read (struct thread *thread) void routing_socket () { - if ( zserv_privs.change (ZPRIVS_RAISE) ) - zlog_err ("routing_socket: Can't raise privileges"); - routing_sock = socket (AF_ROUTE, SOCK_RAW, 0); if (routing_sock < 0) { - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("routing_socket: Can't lower privileges"); zlog_warn ("Can't init kernel routing socket"); return; } if (fcntl (routing_sock, F_SETFL, O_NONBLOCK) < 0) zlog_warn ("Can't set O_NONBLOCK to routing socket"); - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("routing_socket: Can't lower privileges"); /* kernel_read needs rewrite. */ thread_add_read (master, kernel_read, NULL, routing_sock); diff --git a/zebra/main.c b/zebra/main.c index 72b1fc4e..66469a2f 100644 --- a/zebra/main.c +++ b/zebra/main.c @@ -1,4 +1,5 @@ -/* zebra daemon main routine. +/* + * zebra daemon main routine. * Copyright (C) 1997, 98 Kunihiro Ishiguro * * This file is part of GNU Zebra. @@ -29,7 +30,6 @@ #include "memory.h" #include "prefix.h" #include "log.h" -#include "privs.h" #include "zebra/rib.h" #include "zebra/zserv.h" @@ -62,32 +62,10 @@ struct option longopts[] = { "vty_addr", required_argument, NULL, 'A'}, { "vty_port", required_argument, NULL, 'P'}, { "retain", no_argument, NULL, 'r'}, - { "user", required_argument, NULL, 'u'}, { "version", no_argument, NULL, 'v'}, { 0 } }; -zebra_capabilities_t _caps_p [] = -{ - ZCAP_ADMIN, - ZCAP_SYS_ADMIN, -}; - -/* zebra privileges to run with */ -struct zebra_privs_t zserv_privs = -{ -#if defined(ZEBRA_USER) && defined(ZEBRA_GROUP) - .user = ZEBRA_USER, - .group = ZEBRA_GROUP, -#endif -#ifdef VTY_GROUP - .vty_group = VTY_GROUP, -#endif - .caps_p = _caps_p, - .cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]), - .cap_num_i = 0 -}; - /* Default configuration file path. */ char config_current[] = DEFAULT_CONFIG_FILE; char config_default[] = SYSCONFDIR DEFAULT_CONFIG_FILE; @@ -115,7 +93,6 @@ redistribution between different routing protocols.\n\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ -r, --retain When program terminates, retain added route by zebra.\n\ --u, --user User and group to run as\n\ -v, --version Print program version\n\ -h, --help Display this help and exit\n\ \n\ @@ -219,7 +196,7 @@ main (int argc, char **argv) { int opt; - opt = getopt_long (argc, argv, "bdklf:hA:P:ru:v", longopts, 0); + opt = getopt_long (argc, argv, "bdklf:hA:P:rv", longopts, 0); if (opt == EOF) break; @@ -262,9 +239,6 @@ main (int argc, char **argv) case 'r': retain_mode = 1; break; - case 'u': - zserv_privs.user = zserv_privs.group = optarg; - break; case 'v': print_version (progname); exit (0); @@ -281,9 +255,6 @@ main (int argc, char **argv) /* Make master thread emulator. */ master = thread_master_create (); - /* privs initialise */ - zprivs_init (&zserv_privs); - /* Vty related initialize. */ signal_init (); cmd_init (1); diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index e1514623..87062dc5 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -34,7 +34,6 @@ #include "table.h" #include "rib.h" #include "thread.h" -#include "privs.h" #include "zebra/zserv.h" #include "zebra/redistribute.h" @@ -68,8 +67,6 @@ struct message nlmsg_str[] = extern int rtm_table_default; -extern struct zebra_privs_t zserv_privs; - /* Make socket for Linux netlink interface. */ static int netlink_socket (struct nlsock *nl, unsigned long groups) @@ -101,25 +98,14 @@ netlink_socket (struct nlsock *nl, unsigned long groups) snl.nl_groups = groups; /* Bind the socket to the netlink structure for anything. */ - if ( zserv_privs.change(ZPRIVS_RAISE) ) - { - zlog (NULL, LOG_ERR, "Can't raise privileges"); - return -1; - } - ret = bind (sock, (struct sockaddr *) &snl, sizeof snl); if (ret < 0) { - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); zlog (NULL, LOG_ERR, "Can't bind %s socket to group 0x%x: %s", nl->name, snl.nl_groups, strerror (errno)); close (sock); return -1; } - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); /* multiple netlink sockets will have different nl_pid */ namelen = sizeof snl; @@ -200,28 +186,14 @@ netlink_request (int family, int type, struct nlsock *nl) req.nlh.nlmsg_pid = 0; req.nlh.nlmsg_seq = ++nl->seq; req.g.rtgen_family = family; - - /* linux appears to check capabilities on every message - * have to raise caps for every message sent - */ - if ( zserv_privs.change(ZPRIVS_RAISE) ) - { - zlog (NULL, LOG_ERR, "Can't raise privileges"); - return -1; - } ret = sendto (nl->sock, (void*) &req, sizeof req, 0, (struct sockaddr*) &snl, sizeof snl); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - if (ret < 0) - { + { zlog (NULL, LOG_ERR, "%s sendto failed: %s", nl->name, strerror (errno)); return -1; } - return 0; } @@ -243,13 +215,7 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *), struct msghdr msg = { (void*)&snl, sizeof snl, &iov, 1, NULL, 0, 0}; struct nlmsghdr *h; - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - status = recvmsg (nl->sock, &msg, 0); - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); if (status < 0) { @@ -1138,12 +1104,7 @@ netlink_talk (struct nlmsghdr *n, struct nlsock *nl) n->nlmsg_seq); /* Send message to netlink interface. */ - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog (NULL, LOG_ERR, "Can't raise privileges"); status = sendmsg (nl->sock, &msg, 0); - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - if (status < 0) { zlog (NULL, LOG_ERR, "netlink_talk sendmsg() error: %s", diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c index d603c60d..19b2fc2f 100644 --- a/zebra/rt_socket.c +++ b/zebra/rt_socket.c @@ -27,13 +27,10 @@ #include "sockunion.h" #include "log.h" #include "str.h" -#include "privs.h" #include "zebra/debug.h" #include "zebra/rib.h" -extern struct zebra_privs_t zserv_privs; - int rtm_write (int message, union sockunion *dest, @@ -190,29 +187,13 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) int kernel_add_ipv4 (struct prefix *p, struct rib *rib) { - int route; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - route = kernel_rtm_ipv4 (RTM_ADD, p, rib, AF_INET); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - - return route; + return kernel_rtm_ipv4 (RTM_ADD, p, rib, AF_INET); } int kernel_delete_ipv4 (struct prefix *p, struct rib *rib) { - int route; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - route = kernel_rtm_ipv4 (RTM_DELETE, p, rib, AF_INET); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - - return route; + return kernel_rtm_ipv4 (RTM_DELETE, p, rib, AF_INET); } #ifdef HAVE_IPV6 @@ -440,29 +421,13 @@ kernel_rtm_ipv6_multipath (int cmd, struct prefix *p, struct rib *rib, int kernel_add_ipv6 (struct prefix *p, struct rib *rib) { - int route; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - route = kernel_rtm_ipv6_multipath (RTM_ADD, p, rib, AF_INET6); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - - return route; + return kernel_rtm_ipv6_multipath (RTM_ADD, p, rib, AF_INET6); } int kernel_delete_ipv6 (struct prefix *p, struct rib *rib) { - int route; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - route = kernel_rtm_ipv6_multipath (RTM_DELETE, p, rib, AF_INET6); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - - return route; + return kernel_rtm_ipv6_multipath (RTM_DELETE, p, rib, AF_INET6); } /* Delete IPv6 route from the kernel. */ @@ -470,14 +435,6 @@ int kernel_delete_ipv6_old (struct prefix_ipv6 *dest, struct in6_addr *gate, int index, int flags, int table) { - int route; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - route = kernel_rtm_ipv6 (RTM_DELETE, dest, gate, index, flags); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog (NULL, LOG_ERR, "Can't lower privileges"); - - return route; + return kernel_rtm_ipv6 (RTM_DELETE, dest, gate, index, flags); } #endif /* HAVE_IPV6 */ diff --git a/zebra/rtadv.c b/zebra/rtadv.c index 9dcee8ea..8f4b3778 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -29,14 +29,11 @@ #include "prefix.h" #include "linklist.h" #include "command.h" -#include "privs.h" #include "zebra/interface.h" #include "zebra/rtadv.h" #include "zebra/debug.h" -extern struct zebra_privs_t zserv_privs; - #if defined (HAVE_IPV6) && defined (RTADV) /* If RFC2133 definition is used. */ @@ -146,7 +143,7 @@ rtadv_send_packet (int sock, struct interface *ifp) struct cmsghdr *cmsgptr; struct in6_pktinfo *pkt; struct sockaddr_in6 addr; -#ifdef HAVE_SOCKADDR_DL +#if HAVE_SOCKADDR_DL struct sockaddr_dl *sdl; #endif /* HAVE_SOCKADDR_DL */ char adata [sizeof (struct cmsghdr) + sizeof (struct in6_pktinfo)]; @@ -412,16 +409,8 @@ rtadv_make_socket (void) int ret; struct icmp6_filter filter; - if ( zserv_privs.change (ZPRIVS_RAISE) ) - zlog_err ("rtadv_make_socket: could not raise privs, %s", - strerror (errno) ); - sock = socket (AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - if ( zserv_privs.change (ZPRIVS_LOWER) ) - zlog_err ("rtadv_make_socket: could not lower privs, %s", - strerror (errno) ); - /* When we can't make ICMPV6 socket simply back. Router advertisement feature will not be supported. */ if (sock < 0) diff --git a/zebra/zebra_snmp.c b/zebra/zebra_snmp.c index b028c3ec..051aaaa7 100644 --- a/zebra/zebra_snmp.c +++ b/zebra/zebra_snmp.c @@ -22,6 +22,9 @@ #include <zebra.h> #ifdef HAVE_SNMP +#ifdef HAVE_NETSNMP +#include <net-snmp/net-snmp-config.h> +#endif #include <asn1.h> #include <snmp.h> #include <snmp_impl.h> diff --git a/zebra/zserv.c b/zebra/zserv.c index 975574af..70e7672d 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -33,7 +33,6 @@ #include "sockunion.h" #include "log.h" #include "zclient.h" -#include "privs.h" #include "zebra/zserv.h" #include "zebra/redistribute.h" @@ -51,8 +50,6 @@ int rtm_table_default = 0; void zebra_event (enum event event, int sock, struct zserv *client); -extern struct zebra_privs_t zserv_privs; - extern struct thread_master *master; /* For logging of zebra meesages. */ @@ -1641,9 +1638,6 @@ zebra_serv () sockopt_reuseaddr (accept_sock); sockopt_reuseport (accept_sock); - if ( zserv_privs.change(ZPRIVS_RAISE) ) - zlog (NULL, LOG_ERR, "Can't raise privileges"); - ret = bind (accept_sock, (struct sockaddr *)&addr, sizeof (struct sockaddr_in)); if (ret < 0) @@ -1653,9 +1647,6 @@ zebra_serv () close (accept_sock); /* Avoid sd leak. */ return; } - - if ( zserv_privs.change(ZPRIVS_LOWER) ) - zlog (NULL, LOG_ERR, "Can't lower privileges"); ret = listen (accept_sock, 1); if (ret < 0) |